pushViewController为导航栏设置动画,但新视图不会显示

时间:2013-03-14 21:19:15

标签: ios objective-c cocoa-touch

我有一个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

2 个答案:

答案 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方法中启动了一个模态窗口。这在某种程度上混淆了系统,并且是问题的根源。