gpt4 book ai didi

iphone - UITableView reloadData - cellForRowAtIndexPath 未触发

转载 作者:行者123 更新时间:2023-12-03 18:31:52 24 4
gpt4 key购买 nike

我有 splitViewController,它有一些 viewController 作为 MasterViewController 和一些 tableViewController 作为 DetailViewController。当我按下 masterViewController 上的按钮时,我想在detailViewController 中显示新的 tableViewController 而不是现有的。

所以我这样做了:

SearchDetailViewController *searchDetailViewController = [[SearchDetailViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *searchDetailNavigationController = [[UINavigationController alloc] initWithRootViewController:searchDetailViewController];

之后,我将传递数据以在新的 tableController 中显示:

[searchDetailViewController passInSearchResults:listOfItems];

之后,我将新 Controller “推送”到 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”...???

谢谢

最佳答案

调用[self.tableView reloadData]时检查是否处于主线程

- (void)passInSearchResults:(NSMutableDictionary *)searchResults {
if ([NSThread isMainThread]) {
self.searchResultList = searchResults;
NSLog(@"Data is passed in: %@",self.searchResultList);
[self.tableView reloadData];
}
else {
[self performSelectorOnMainThread:@selector(passInSearchResults:) searchResults waitUntilDone:NO];
}

}

关于iphone - UITableView reloadData - cellForRowAtIndexPath 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3470892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com