【问题标题】:Set View Controller Subview Loaded from Storyboard设置从情节提要加载的视图控制器子视图
【发布时间】:2014-10-25 20:16:51
【问题描述】:

我有一个从 Storyboard 加载的自定义视图控制器。当我尝试设置它的一个子视图时,什么也没有发生(仍然是通用的白色视图)。我不明白的是,如果我尝试设置 VC.view 它工作正常。为什么是这样?从情节提要加载后,一切似乎都已初始化。 VS的子视图应该在哪里设置?

【问题讨论】:

  • “设置其子视图之一”是什么意思?显示您用于执行此操作的代码。

标签: ios objective-c uiviewcontroller


【解决方案1】:

是的,这种稍微令人困惑的行为是它“应该”工作的方式。当一个视图控制器被加载时,它的视图不是——至少在实际需要它之前是这样。请参阅this doc 了解更多信息。只有当视图控制器出现时,它才会加载视图。正如您所发现的,这很烦人,因为您经常想要设置一些子视图的属性之前(比如在prepareForSeguepushViewController:presentViewController: 之前)。

有一种解决方法 - 根据您观察到的情况。如果直接访问视图属性,视图控制器将立即加载视图及其所有子视图。所以,如果你想设置子视图属性,只需“触摸”视图本身:

NSLog(@"View tag is %i", viewController.view.tag);

然后您应该能够访问子视图。

或者,您可以在视图控制器的(非 UI)属性中传递相关数据,然后在 viewDidLoadviewWillAppear 期间使用该数据设置子视图。

【讨论】:

  • 我试图将要显示的视图传递给视图控制器上的临时属性,然后将其加载到 viewDidLoad/viewWilLAppear 中的正确子视图中,但它仍然不起作用。目前,我可以显示视图的唯一方法是将其设置为 viewControllers 视图,而不是子视图。感谢您的回复,还有其他关于我可能做错了什么的想法吗?
  • 如果你发布一些代码,我相信有人会有一些想法。或许可以多解释一下你想要达到的目标。
猜你喜欢
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2013-08-16
  • 1970-01-01
  • 2012-01-02
相关资源
最近更新 更多