【问题标题】:Swift load UIViewController from xib IBOutlets nil [duplicate]从xib IBOutlets nil Swift加载UIViewController [重复]
【发布时间】:2019-04-20 03:05:59
【问题描述】:

我要拔掉我剩下的一点头发!

我有一个带有匹配 .xib 文件的 UIViewController。在 .xib 中,我有一个 IBOutlet,它是在名为“titleText”的界面生成器中制作的

在我的一段代码中,我有以下几行:

let fooVC = FooViewController(nibName: "FooViewController", bundle: Bundle.main)
fooVC.titleText = "TEST"

viewController“似乎”加载得很好,我得到了一个正确类型的对象,但是 IBOutlets 没有初始化。

是否需要执行其他步骤来初始化我可能拥有的任何 IBOutlets?

这一定很简单吧?!

【问题讨论】:

标签: ios swift uiviewcontroller xib


【解决方案1】:

在视图加载之前,Outlets 为 nil。因此,只需创建另一个变量并存储标题字符串,如下所示

class FooViewController: UIViewController {
    @IBOutlet titleText:UILable!
    var titleString:String?

    override func viewDidLoad() {
       super.viewDidLoad()
       titleText.text = titleString
    }
}

用途:

let fooVC = FooViewController()
fooVC.titleString = "TEST"

【讨论】:

  • 不,loadViewIfNeeded 会让它加载
  • 实际上对我有用的修复是viewDidLoad()方法中的_ = self.view
猜你喜欢
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2017-01-08
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
相关资源
最近更新 更多