gpt4 book ai didi

iphone - 我可以使 UINavigationController 仅在第二级加载,而不是在 Root View Controller 加载

转载 作者:行者123 更新时间:2023-11-29 04:59:15 25 4
gpt4 key购买 nike

我尝试寻找类似的问题,但找不到类似的问题。

我正在 UIView 中加载 UINavigationController,它不是(在大多数示例中)MainWindow。

我创建了一个名为 DocumentsViewController 的新 .xib,它是 UIView 的子类(它具有相关的 .m 和 .h 文件)。我创建了一个 DocumentsRootViewController.xib,它是 UITableViewController 的子类,它应该是 UINavigationController 的 RootViewController。

我移至 DocumentsViewController 并在 Interface Builder 中添加了 UINavigationController 对象。然后我开始编写代码,将其添加到 IBOutlet 中,并将其连接到该对象。

在 ViewDidLoad 中,我执行以下几行:

DocumentsRootViewController *rootViewController = [[[DocumentsRootViewController alloc] init] autorelease];
rootViewController.title = @"Documents";
[navigationControllerDocuments initWithRootViewController:rootViewController];
[self.view addSubview:navigationControllerDocuments.view];

它按预期显示了表格,但它显示了“ Root View Controller ”的“后退”按钮(如下图所示)。

为什么?它不是应该已经知道rootviewcontroller已经设置了吗?

提前感谢那些澄清这个疑问的人

乔瓦尼

The UINavigationController behavior Xib Structure

最佳答案

当您通过 Nib 添加 UINavigationController 时,它实际上会在 nib 文件内创建一个 UINavigationController 实例,其中包含默认 RootViewController 集(类型为 UIViewController)以及默认标题 RootViewController。

当您加载 Nib 时,该对象将作为加载 Nib 的一部分创建(即,当您初始化 DocumentsViewController 时) - 因此 navigationControllerDocuments 导出已初始化为 UINavigationController,并已在其上设置了默认 ViewController。

我认为正在发生的事情是当您调用“initWithRootViewController”时 - 您正在一个已经初始化的对象上调用它 - 因此它再次运行初始化代码 - 将第二个 View Controller (DocumentRootViewController)插入堆栈,但是在 Nib 中创建的默认值已经存在。

您可能应该做的是忘记在 Nib 中创建一个并以编程方式初始化整个事物。

即你在哪里做:

[navigationControllerDocuments initWithRootViewController:rootViewController];

我建议您改为进行分配和初始化:

[[navigationControllerDocuments alloc] initWithRootViewController:rootViewController];

既然你这样做了,你真的不需要将导航 Controller 添加到 Nib ,所以如果这有效,你应该将其从 Nib 中删除,因为你要在代码中用这个 Controller 替换它。

关于iphone - 我可以使 UINavigationController 仅在第二级加载,而不是在 Root View Controller 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7326701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com