我有一个iOS应用程序正在做一些疯狂的事情......我会尽力描述它。
我的导航架构如下:
AppDelegate称之为:
tabNavController = [[MainTabViewController alloc] initWithNibName:nil bundle:nil];
self.window.rootViewController = tabNavController;
[self.window makeKeyAndVisible];
MainTabViewController继承自UITabBarController
在MainTabViewController的viewDidLoad中,我以编程方式将我的标签加载到NSMutableArray并将其分配给tabControllers:
NSMutableArray *tabs;
StreamViewController *controller = [StreamViewController alloc] initWithNib...];
UINavigationController *navCon = [UINavigationController alloc] initWithRootViewController:controller];
[tabs addObject:navContorller];
...
self.viewControllers = tabs;
我的第一个标签 - 默认显示的标签 - 继承自UIViewController。我在XIB中有一个UITableView设置作为主视图。我的类是UITableViewDelegate和UITableViewDataSource。
StreamViewController : BaseModuleViewController <UITableViewDelegate, UITableViewDataSource>
表加载并显示正常。当用户单击一行时,我将一个新的视图控制器推送到堆栈:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
...
DetailViewController* detailController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:detailController animated:YES];
...
}
这是奇怪的地方。视图控制器就像它要显示一样,但事实并非如此。我看到我的导航栏动画 - 我的按钮移动,标题改变,后退按钮显示 - 但视图本身不显示。我甚至可以继续单击表格视图单元格并不断加载越来越多的视图,每个新视图都会为导航栏设置动画并显示一个新的后退按钮。然后,我可以回复X次以“返回”我的StreamViewController。
这是下一个踢球者。如果我导航到选项卡#2,然后返回选项卡#1,则不会发生上述任何情况,并且视图显示的确如此。
奇怪 - 有人看过这个并知道发生了什么事吗?
修改
以下是YouTube视频,显示无效:http://youtu.be/Shces88d6Go
答案 0 :(得分:0)
尝试添加导航控制器作为根视图控制器。
tabNavController = [[MainTabViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:tabNavController];
self.window.rootViewController = navCtrl;
[self.window makeKeyAndVisible];
答案 1 :(得分:0)
发现我在MainTabViewController的viewDidLoad方法中启动了一个模态窗口。这在某种程度上混淆了系统,并且是问题的根源。