UINavigationController作为UISplitViewController的详细视图

时间:2010-04-05 15:25:25

标签: ipad uinavigationcontroller uisplitviewcontroller

我将导航控制器设置为拆分视图控制器的详细视图(NewFeedsNavigationController继承自UINavigationController)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    masterViewController = [[MasterViewController alloc] initWithStyle:UITableViewStylePlain];
    UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    NewsFeedsNavigationController *newsFeedsNavigationController = [[NewsFeedsNavigationController alloc] initWithCategories];

    splitViewController = [[UISplitViewController alloc] init];
    masterViewController.splitViewController = splitViewController;
    splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, newsFeedsNavigationController, nil];
    splitViewController.delegate = newsFeedsNavigationController;


    // Add the split view controller's view to the window and display.
    [window addSubview:splitViewController.view];
    [window makeKeyAndVisible];

    return YES;
}

事实上,导航控制器在纵向方向上工作得非常出色,但在横向方向上有点怪异。当在层次结构中导航回来(朝向根视图)时,我总是必须每次点击两次。在第一次点击时,从堆栈弹出可见视图,在第二次点击时,导航栏转动。通常,两者都是同时发生的。我不知道出了什么问题。

1 个答案:

答案 0 :(得分:3)

我错了。在最新版本中,错误的行为仍然存在,但我找到了适合我案例的解决方案。您不得派生自定义UINavigationController子类。它甚至在视图控制器程序员指南中这样说。在这个限制之后,我能够解决所有问题。