以编程方式创建 UINavigationController

Posted

技术标签:

【中文标题】以编程方式创建 UINavigationController【英文标题】:programmatically creating a UINavigationController 【发布时间】:2011-08-25 16:31:05 【问题描述】:

最初我使用 IB 将导航控制器拖到我的标签栏上,然后设置根控制器。但是,我正在尝试创建一个没有 IB 的导航控制器。

我所做的是创建了一个导航控制器子类,它将在我的标签栏中使用。导航栏确实出现了,所以我知道它正在工作。

现在,我需要将视图控制器推送到层次结构中。在导航控制器的 viewDidLoad 中:

- (void)viewDidLoad 

    InfoViewController *initialController = [[InfoViewController alloc] init];
    [self.navigationController pushViewController:initialController animated:YES];

    [initialController release];
    [super viewDidLoad];

我没有收到任何错误,但导航控制器中没有显示任何内容。有人知道为什么吗?

【问题讨论】:

Apple 建议不要继承 UINavigationController 顺便说一句...仅供参考,不推荐。另外,为什么不直接将视图控制器推送到导航控制器,然后以模态方式呈现呢?最简单的方法真的...... 如果你不应该继承 navcontroller 的子类,你会如何编程呢?一定要用笔尖吗?我不是把我的视图控制器推到导航控制器上吗? 看到您发现了问题。如果您需要任何帮助,请告诉我。 【参考方案1】:

InfoViewController 的 init 方法是什么样的?如果您使用 nib 来构建它,那么您需要调用 initWithNib,而不是 init。

【讨论】:

不涉及笔尖。我想我发现了问题。我在导航控制器中使用了 self.navigationController。应该是自己【参考方案2】:

在创建导航控制器时/在哪里创建视图控制器(并将它们添加到其中),然后将视图控制器列表添加到标签栏。

【讨论】:

以上是关于以编程方式创建 UINavigationController的主要内容,如果未能解决你的问题,请参考以下文章

无法隐藏以编程方式创建的 UIButton

Android 编程:如何以网格方式以编程方式创建各种视图类型

如何以编程方式创建“数据库创建脚本”?

如何以编程方式创建 UICollectionViewCell

dojo中以编程方式与以声明方式创建的小部件之间的区别?

以编程方式创建和显示 UIPickerView