我在标签栏控制器外面有一个标签栏控制器和一些其他视图控制器。我有这个viewcontroller叫" X"这是标签栏控制器的一部分。我有另一个名为" Y"这不是标签栏控制器的一部分。现在我想在点击按钮时在Y内部启动X而不实际呈现它。我想让X变为活动状态并激活它的viewdidload,以便每当我选择这样做时我都可以访问X.这可能吗。对不起,如果我不清楚解释我的静止。如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:2)
我希望X变为活动状态并触发其viewdidload,这样我就可以在每次选择时访问X.
UIViewController
对view
属性使用延迟加载。你可以打电话:
[myViewController view];
如果已实施,则会触发loadView
和/或viewDidLoad
方法。
但是,您可以考虑将相关逻辑从viewDidLoad
移至init
(或initWithCoder:
,如果使用storyboard / xib)。这样您就不必致电-view
。
答案 1 :(得分:0)
如果我理解正确,你希望X被初始化。因此,您可以在init构造函数上执行所有初始化操作。当您通过pushViewController或addSubview执行某些演示时,viewDidLoad将仅由框架调用。原因在于,因为框架希望避免在不使用的情况下获取内存上的视图实例。因此,您可以从控制器初始化所需的所有内容,但不会加载视图。
答案 2 :(得分:0)
此时的老问题,但我昨天才在寻找答案,并设法弄明白。
实例化ViewController,然后调用loadViewIfNeeded()。
示例:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let exampleVC = storyboard.instantiateViewController(withIdentifier: "ExampleViewController") as! ExampleViewController
exampleVC.loadViewIfNeeded()
如果需要,您可以检查视图是否加载:
exampleVC.isViewLoaded
ViewController现在全部设置完毕,并在您决定显示时准备好显示。