2012-03-10 30 views
6

Tôi cảm thấy đây là vấn đề cần chú ý đặc biệt ... Google-fu của tôi khá tốt nhưng tôi chưa thể có được bất kỳ thứ gì hữu ích.Xác nhận thất bại cho UITableView selectRowAtIndexPath

Đây là điều đơn giản nhất, nhưng tôi dường như không thể tìm ra vấn đề là gì.

Tôi có UITableView. Đó là một subview mà VC của tôi gọi _form. Tôi đang sử dụng nó cho mục đích tạo kiểu, không thực sự để hiển thị dữ liệu. Nó có 2 ô.

Trên một sự kiện nhất định, tôi đang cố chọn một ô khác, sử dụng selectRowAtIndexPath: animated: scrollPosition.

Khi tôi làm điều này, nó SIGABRTS.

Một ví dụ đơn giản:

- (IBAction)submitClicked:(id)sender 
{ 
    [_submit setTitle:@"Wha!?" forState:UIControlStateNormal]; 
    NSIndexPath *row = [NSIndexPath indexPathWithIndex:0]; 
    NSLog(@"%d", [[_form indexPathForSelectedRow] row]); 
    [_form selectRowAtIndexPath:row animated:YES scrollPosition:YES]; 
} 

Tiêu đề của nút được thay đổi, và các bản in bảng mà các hàng đã chọn là 0 hoặc 1, nhưng cố gắng để chọn các tế bào mong muốn, nó phá vỡ:

2012-03-09 21:57:39.905 <omitted>[16329:207] 0 
2012-03-09 21:57:39.908 <omitted>[16329:207] *** Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewSupport.m:2598 
(gdb) 

Giả định của tôi là điều này ngụ ý điều gì đó sai với cách cấu hình bảng của tôi, nhưng tôi không chắc chắn về điều gì. Việc chọn các ô trong bảng bình thường (nhấp vào nó) đang hoạt động, như được chỉ ra bởi phản hồi mong đợi trong tableView của tôi: didSelectRowAtIndexPath. Mọi thứ khác hoạt động tốt với cách tôi đã thiết lập này, ngoại trừ điều này.

(Ngoài ra, tôi người khác trả lời với thêm thông tin gỡ lỗi, không chỉ "(gdb)". Làm thế nào tôi có thể có được điều này?)

Cảm ơn!

Trả lời

18

Đường dẫn chỉ mục cho ô xem bảng cần có cả hàng và phần. Hãy thử tạo đường dẫn chỉ mục của bạn bằng cách sử dụng phương thức factory (được định nghĩa trong NSIndexPath UIKit Additions) như thế này:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
[_form selectRowAtIndexPath:indexPath animated:YES scrollPosition:YES]; 
+0

Cảm ơn, wow thật bực mình. Đó là những gì tôi nhận được vì dựa quá nhiều vào những gì mã gợi ý cho tôi biết. Nó không bao giờ gợi ý rằng một. > :-( – Liandri

Các vấn đề liên quan