私のアプリにはtabBarControllerがあります。 UITableViewControllerである別のtabBarをタップすると、ビューは空になり、cellForRowAtIndexPathは発生しません(numberOfRowsInSectionは0またはnilではありません)。tabBarControllerはcellForRowAtIndexPathを発行しませんUITableViewController
コードは次のとおりです。
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
[[viewController navigationController] popToRootViewControllerAnimated:NO];
switch (tabBarController.tabBar.selectedItem.tag) {
case 1:
NSLog(@"Home");
break;
case 2:
NSLog(@"Profile");
break;
case 3:
{
NSLog(@"Bookmark");
BookmarkCategoryViewController *bookmarkVC =[self.storyboard instantiateViewControllerWithIdentifier:@"BookmarkCategory"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
/// Background work
BookmarkManager *p = [[BookmarkManager alloc]init];
[p fetchBookmarks:self.categoryId];
bookmarkVC.entries = p.appRecordList;
bookmarkVC.categoryId = self.categoryId;
bookmarkVC.ID_list_entries = _ID_list_entries;
[bookmarkVC.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
/// Update UI
[tabBarController setSelectedIndex:1];
});
});
}
break;
case 4:
NSLog(@"Setting");
break;
default:
NSLog(@"Home");
break;
}
}
が、同じコードを変更するには、次の
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
[[viewController navigationController] popToRootViewControllerAnimated:NO];
switch (tabBarController.tabBar.selectedItem.tag) {
case 1:
NSLog(@"Home");
break;
case 2:
NSLog(@"Profile");
break;
case 3:
{
NSLog(@"Bookmark");
BookmarkCategoryViewController *bookmarkVC =[self.storyboard instantiateViewControllerWithIdentifier:@"BookmarkCategory"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// Background work
BookmarkManager *p = [[BookmarkManager alloc]init];
[p fetchBookmarks:self.categoryId];
bookmarkVC.entries = p.appRecordList;
bookmarkVC.categoryId = self.categoryId;
bookmarkVC.ID_list_entries = _ID_list_entries;
[bookmarkVC.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
/// Update UI
[bookmarkVC setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self.navigationController pushViewController:bookmarkVC animated:YES];
});
});
}
break;
case 4:
NSLog(@"Setting");
break;
default:
NSLog(@"Home");
break;
}
}
仕事を正しく! tabBarController hideとtabBarControllerビューへの別のビューのプッシュ。 ありがとうございます。
バックグラウンドキューで 'reloadData'を呼び出すことはできません。 – Sulthan