我有 splitViewController,它有一些 viewController 作为 MasterViewController 和一些 tableViewController 作为 DetailViewController。当我按下 masterViewController 上的按钮时,我想在 detailViewController 中显示新的 tableViewController 而不是现有的。
所以我这样做了:
SearchDetailViewController *searchDetailViewController = [[SearchDetailViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *searchDetailNavigationController = [[UINavigationController alloc] initWithRootViewController:searchDetailViewController];
之后,我传递数据以显示在新的 tableController 中:
[searchDetailViewController passInSearchResults:listOfItems];
之后,我将新控制器“推送”到 splitViewController:
[searchSplitViewController setViewControllers:[NSArray arrayWithObjects:self.navigationController, searchDetailNavigationController, nil]];
在目标 tableViewController 方法“passInSearchResults”中传递数据,我还调用了 reloadData。方法如下所示:
- (void)passInSearchResults:(NSMutableDictionary *)searchResults {
self.searchResultList = searchResults;
NSLog(@"Data is passed in: %@",self.searchResultList);
[self.tableView reloadData];
//[self.tableView setNeedsDisplay];
}
控制台:数据传入:[这里我得到了我想要的确切数据,而且看起来恰到好处]。
After this I see that method "numberOfRowsInSection" is fired:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Setting table length: %i",[self.searchResultList count]);
return [self.searchResultList count];
}
控制台:设置表格长度:[这里我得到正确的长度]
问题是表格没有填充传递的数据,并且没有调用方法“cellForRowAtIndexPath”。
怎么可能在 reloadData 方法“numberOfRowsInSection”上被触发但不是方法“cellForRowAtIndexPath”......?
谢谢