我在 UITabBarController 中有一组五个 UINavigationController。问题是只有一些 UINavigationControllers 有 viewWillAppear: 在它们各自的 UITableViewControllers 中调用。
我目前的设置是:(一切都是以编程方式创建的)
|
tabBarController
(UITabBarController)
|
---------------------------------------- ...etc...
| |
tempNavController tempNavController <--- Secondary NavContr
(UINavigationController) (UINavigationController) Not subclassed
| |
scheduleViewController currentViewController
(UITableViewController) (UITableViewController)
| |
...more UITableViewControllers...
只有一些 UITableViewController 调用 viewWillAppear 和 viewDidAppear,而那些调用它的 UITableViewController 并没有为视图出现的每种方式调用它。有些仅在我推送到视图时调用它,有些仅在我弹出到视图时调用,有些仅在我将选项卡切换到视图时调用。
什么会导致问题只出现在一些 UITableViewControllers 而不是全部?为什么视图只能以某些方式出现?所有选项卡和表格都以相同的方式设置。
编辑:这是我用来设置标签的代码:
- (void)viewDidLoad
{
//Setup of two of the tabs
//Create navigation controller and root view for each tab
//Current Comps
CurrentCompsViewController *tempCurrentCompsViewController = [[CurrentCompsViewController alloc] init];
[tempCurrentCompsViewController setAProgram:self.currentProgram];
self.currentCompsviewcontroller = [[UINavigationController alloc] initWithRootViewController:tempCurrentCompsViewController];
//Comp List
CompetitionListViewController *tempCompListViewController = [[CompetitionListViewController alloc] init];
[tempCompListViewController setAProgram:self.currentProgram];
self.competitionListViewController = [[UINavigationController alloc] initWithRootViewController:tempCompListViewController];
//Create and add tabBarItems
UITabBarItem *compListITem = [[UITabBarItem alloc] initWithTitle:@"Competitions" image:[UIImage imageNamed:@"CompsIcon.png"] tag:6];
[self.competitionListViewController setTabBarItem:compListITem];
UITabBarItem *curentItem = [[UITabBarItem alloc] initWithTitle:@"Current Comps." image:[UIImage imageNamed:@"CurrentIcon.png"] tag:7];
[self.currentCompsviewcontroller setTabBarItem:curentItem];
//Add everything to tab array, and sort tabs... etc...
}
我不会覆盖与在选项卡视图中选择项目有关的任何事情,也不会在每个选项卡的根目录中对导航控制器进行子类化。