如何以编程方式加载 UIViewController?

Posted

技术标签:

【中文标题】如何以编程方式加载 UIViewController?【英文标题】:How to load a UIViewController programmatically? 【发布时间】:2011-03-28 20:21:51 【问题描述】:

我正在尝试从代码中加载 UIViewController。我基本上创建了一个 UIViewController 生成一个 .xib 文件。我用以下代码加载它:

testViewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];

这可行,但显然(根据我的阅读)只保留视图并释放控制器(我已经测试过在 UIViewController 的 dealloc 方法中放置一个断点)。我需要保留 UIViewController 或其他方式,创建一个 UIViewController 并使用从 nib 文件加载的 UIView。如何实现?

【问题讨论】:

【参考方案1】:

不确定你的意思。你在那里做的是正确的。既然你已经分配了它,你还需要在某个时候向视图控制器发送一个释放语句,直到那时它不应该被释放。

在应用程序收到内存警告的特殊情况下,视图可能会被释放并设置为 nil,但我不确定这是否是您所阅读的内容。

【讨论】:

我想我搞错了。 UIViewController 和 UIView 正在被释放。我在链接到 UIViewController 的 nib 中放置了一个 UITableViewController。那是在我没有告诉任何地方的情况下被释放的那个。 ...任何想法可能会发生什么? 嗯,很奇怪。你能看到表格视图吗?还是只是随机释放?我会注释掉任何发布声明,看看它是否有帮助。你能发布更多代码/崩溃日志吗? TableView 正在显示,但稍后当再次需要委托(UITableViewController)时它会崩溃。除了在 UIViewController 的 dealloc 方法和 UITableViewController (没有被调用)之外,我没有在任何地方发布任何东西。崩溃消息 EXC_BAD_ACCESS 作为例外(用于调用已释放的对象)。

以上是关于如何以编程方式加载 UIViewController?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式设置的主题。如何重新加载 Activity 以应用

教义:如何以编程方式启用急切加载?

如何从情节提要以编程方式加载 UIViewController?

如何以编程方式查找已加载共享库的版本?

如何在 Windows 中以编程方式强制重启/重新加载 Playback 设备?

如何以编程方式知道 Adob​​e Reader 已完成文件加载?