0

我有一个 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];
   ...
}

这就是奇怪的地方。视图控制器的行为就像要显示,但事实并非如此。我看到我的 navigationBar 动画了——我的按钮移动了,标题改变了,并且显示了一个后退按钮——但是视图本身没有显示。我什至可以继续单击表格视图单元格并不断加载越来越多的视图,每个新视图都会为导航栏设置动画并显示一个新的后退按钮。然后我可以回击 X 次以“返回”到我的 StreamViewController。

这是下一个踢球者。如果我导航到选项卡#2,然后返回选项卡#1,以上都不会发生,并且视图看起来与它应该的完全一样。

奇怪 - 有人看到这个并且知道发生了什么吗?

编辑

这是一个 YouTube 视频,显示它不起作用:http: //youtu.be/Shces88d6Go

4

2 回答 2

0

尝试添加一个导航控制器作为你的根视图控制器。

tabNavController = [[MainTabViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:tabNavController];
    self.window.rootViewController = navCtrl;
    [self.window makeKeyAndVisible];
于 2013-03-14T22:11:19.123 回答
0

发现我在 MainTabViewController 的 viewDidLoad 方法中启动了一个模态窗口。这不知何故混淆了系统,是问题的根源。

于 2013-03-25T17:43:47.410 回答