2009-05-17 15 views
1

배열로 채워지는 UITableView가 있는데,이를 눌렀을 때 배열에 항목을 추가하고 UITableView에서 [self.tableView reloadData]를 호출하는 탐색 표시 줄에 버튼이 있습니다. 이 결과 numberOfRowsInSection이 호출되고 올바른 행 수 (배열의 항목 수)를 반환하지만 cellForRowAtIndexPath는 호출하지 않습니다. 해결책을 찾기 위해 새로운 탐색 기반 응용 프로그램을 만들었지 만 똑같은 문제가 있습니다! 누군가가 답변을 알고 있다면 크게 감사 할 것입니다, 나는 마지막 날 동안 내 머리카락이 남아있는 것을 찢어 버렸습니다! 테스트 프로젝트의 소스를 내 사이트 (www.sofaracing.com/Downloads/Test3.zip)에 넣었습니다.문제점로드 중 문제가 발생했습니다.

+0

내가 테이블 앞에서 모달보기를 팝업하고, 배열을 업데이트하고, reloadData를 호출 한 다음 모달보기를 제거한다면, 절대적으로 문제가 없다고 덧붙여 야합니다! 테이블 뷰가 표시 될 때 왜이 동작을 얻을 수 없습니까? –

답변

2

저에게 맞습니다! ;)

MainWindow.xib에서 루트보기 컨트롤러 (네비게이션 컨트롤러의 일부가 아님)를 추가했습니다. 필요하지 않아도 삭제합니다. 그런 다음 콘센트 refreshFriendsList를 RootViewController의 NavigationItem의 Bar Button에 연결하십시오. 뭐, 마술!

참고 사항 : 경고를 정리해야 할 수 있습니다. 그리고 UIApplication sharedApplication을 사용하는 대신 데이터 모델에 대한 클래스를 만드는 방법을 생각해 볼 수도 있습니다.

+0

좋아, MainWindow.xib의 NavigationController에서 RootViewController를 삭제했지만 그걸 사용하지 않고 IBAction에 막대 버튼을 연결하는 방법을 이해하지 못한다 ...? –

+0

내 의견을 무시, 알았어! 정말 고맙습니다! –

1

신속하게 테스트 응용 프로그램을 디버깅했습니다. 내가 근본 원인을 발견 할 수는 없지만 인터페이스 빌더 설정에서 엉망으로 인해 두 가지 테이블 뷰가있는 것 같습니다.

원래 배열을 항목으로 초기화하면 cellForRowAtIndexPath가 올바르게 호출됩니다. 이 호출에서 self.tableView 인스턴스를 검사하고 나중에 refreshFriendsList를 호출하면 self.tableView가 다른 인스턴스를 가리 킵니다.

2009-05-17 14:33:07.591 Test3[33580:20b] cellForRowAtIndexPath 0 
2009-05-17 14:33:07.594 Test3[33580:20b] self.tableView: <UITableView: 0x52b9b0> 
2009-05-17 14:42:36.810 Test3[33762:20b] numberOfRowsInSection: tableView <UITableView: 0x53bcd0> 
관련 문제