UINavigationController 作为 UISplitViewController 的详细视图

Posted

技术标签:

【中文标题】UINavigationController 作为 UISplitViewController 的详细视图【英文标题】:UINavigationController as detail view of a UISplitViewController 【发布时间】:2010-04-05 15:25:24 【问题描述】:

我将导航控制器设置为拆分视图控制器的详细视图(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】:

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

【讨论】:

以上是关于UINavigationController 作为 UISplitViewController 的详细视图的主要内容,如果未能解决你的问题,请参考以下文章

如何正确关闭作为模式呈现的 UINavigationController?

在 UINavigationController 中添加 UISegmentedControl 作为 titleView

UINavigationController 作为 iPhone 上的弹出框?

呈现 UINavigationController 几个视图深度,作为初始视图

带有 UINavigationController 作为选项卡的 UITabViewController

在以 Uinavigationcontroller 作为视图的 Popovercontroller 中更改导航栏和工具栏的色调