2012-03-10 2 views
6

특별한 관심이 필요한 문제 인 것 같습니다 ... Google-fu는 유용하지만 아무 것도 유용하지 않습니다.UITableView selectRowAtIndexPath에 대한 어설 션 오류

이것은 가장 간단한 문제이지만 문제가 무엇인지 파악할 수 없습니다.

저는 UITableView가 있습니다. 내 VC가 _form을 호출하는 하위보기입니다. 스타일을 지정하기 위해 사용하는 것이지 실제로 데이터를 표시하는 것은 아닙니다. 그것에는 2 개의 세포가있다.

특정 이벤트에서 selectRowAtIndexPath : animated : scrollPosition을 사용하여 다른 셀을 선택하려고합니다.

이렇게하면 SIGABRTS입니다.

간단한 예 :

- (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]; 
} 

버튼의 타이틀이 변경되고, 선택된 행은 0 또는 1이지만 원하는 셀을 선택하려고에 테이블 인화 그것을 나누기 :

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) 

내 가정은 이것이 내 테이블이 구성되는 방법에 문제가 있음을 의미하지만 실제로는 무엇인지 모르겠습니다. TableView : didSelectRowAtIndexPath의 예상 응답에 표시된대로 테이블에서 셀을 정상적으로 선택하면 (클릭하면) 작동합니다. 다른 모든 것은 내가 이것을 어떻게 설정했는지를 제외하고는 잘 작동합니다.

(또한, 나는 다른 사람들이 별도의 디버그 정보와 회신 아니라 "(GDB)". 나는이? 얻을 수있는 방법)

감사합니다!

답변

18

tableview 셀의 인덱스 경로에는 행과 섹션이 모두 있어야합니다. 다음과 같이 공장 방법 (NSIndexPath UIKit Additions에 정의 됨)을 사용하여 색인 경로를 만들어보세요.

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

감사합니다. 와우는 실망합니다. 그게 내가 코드 힌트가 말해주는 것에 너무 많이 의존해서 얻는 것이다. 그걸 결코 제안하지 않았습니다. > :-( – Liandri

관련 문제