如何在不显示视图控制器的情况下启动它?

时间:2014-09-09 13:26:47

标签: ios uiviewcontroller

我在标签栏控制器外面有一个标签栏控制器和一些其他视图控制器。我有这个viewcontroller叫" X"这是标签栏控制器的一部分。我有另一个名为" Y"这不是标签栏控制器的一部分。现在我想在点击按钮时在Y内部启动X而不实际呈现它。我想让X变为活动状态并激活它的viewdidload,以便每当我选择这样做时我都可以访问X.这可能吗。对不起,如果我不清楚解释我的静止。如果您需要任何其他信息,请与我们联系。

3 个答案:

答案 0 :(得分:2)

  

我希望X变为活动状态并触发其viewdidload,这样我就可以在每次选择时访问X.

UIViewControllerview属性使用延迟加载。你可以打电话:

[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现在全部设置完毕,并在您决定显示时准备好显示。