以编程方式创建 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的主要内容,如果未能解决你的问题,请参考以下文章
Android 编程:如何以网格方式以编程方式创建各种视图类型