仅在 iOS 8 中,iOS @IBOutlet 视图全部为零

Posted

技术标签:

【中文标题】仅在 iOS 8 中,iOS @IBOutlet 视图全部为零【英文标题】:iOS @IBOutlet views all be nil only in iOS 8 【发布时间】:2016-11-22 03:48:07 【问题描述】:

我正在使用Xcode8 并参与了一个 OC mix swift 项目

在我的项目中使用我的新viewController,我正在使用swift 2.3 我创建ViewController 只需创建新文件并检查(也板条箱XIB文件)(因此它可以自动绑定VC 由于我过去的代码是 OC,所以我用

初始化我的 VC
_theViewController = [[TheViewController alloc] init];

并想用@IBOutlet 视图设置框架或其他初始化事物

一切正常(xib 按预期加载,在 viewDidLoad 中断后,我可以在 ios 9 和 + 中看到那些 Outlet 实例(不是 nil)

但在 iOS 8 下,无论何时在 viewDidLoad viewWillAppear viewDidAppear 那些 IBOutlet 视图总是为零,并且在我评论所有初始化的东西之后,它似乎只是没有加载我想要的 xib 视图

我尝试了一些我能找到但似乎不起作用的解决方案(我确定 xib 与 VC 链接。(它毕竟是由 xcode 创建和链接的)覆盖某些函数或希望强制加载它的其他方式)

任何建议将不胜感激 T_T

PS:我没有使用故事板,只是使用这个 xib tech 4 快速且可查看的开发

【问题讨论】:

【参考方案1】:

要使用 nib 文件初始化视图控制器对象,请以编程方式创建视图控制器类并使用 init(nibName:bundle:) 方法对其进行初始化。

当它的视图被请求时,视图控制器从 nib 文件中加载它们。

API 参考:https://developer.apple.com/reference/uikit/uiviewcontroller

【讨论】:

所以,我一直都错了。当我简单地运行 [alloc init] int iOS 9+ 自动做init(nibName:bundle:) things 4 me 时?甚至我的工具在 iOS 9+ 中工作,我应该用init(nibName:bundle:) int 替换我的所有 init 这种情况吗?

以上是关于仅在 iOS 8 中,iOS @IBOutlet 视图全部为零的主要内容,如果未能解决你的问题,请参考以下文章

由于 IBOutlet,iOS 应用程序在 didFinishLaunchingWithOptions 中崩溃

iOS:Xcode 6 中的 IBOutlet 为零

应用程序仅在 iPhone 8 iOS 14.4.1 上因内存不足而崩溃

EXC_BAD_ACCESS 仅在运行 iOS 8 的 xcode 8 上

Swift ios将多个项目连接到同一个IBOutlet

iOS 8 弹出框宽度 = 0 在 iPad 上仅在纵向模式下