对于从 IB 加载的 UItableViewController,非视图相关的初始化代码放在哪里

Posted

技术标签:

【中文标题】对于从 IB 加载的 UItableViewController,非视图相关的初始化代码放在哪里【英文标题】:For a UItableViewController loaded from IB, where to put non view related initialization code 【发布时间】:2012-01-07 03:18:21 【问题描述】:

标题已经说明了这一点。

我有一个 UITableViewController。我有一些要初始化的数组。这些与任何观点无关。只是纯粹的后端数据。我应该把它们放在哪里?

我不想将它们放在 viewDidLoad 中,因为每次出现内存问题时,视图都会被卸载。而且每次加载视图时都不需要进行这些初始化。

显然不是 viewWillAppear。

我尝试过的其他地方是 initWithCoder 和 awakeFromNib。

但是我观察到的是,如果我有一个 tabBarController,每个选项卡都有一个 UItableviewController,在第一次加载应用程序时,即使选择的选项卡是第一个选项卡,也会为所有其他选项卡调用 awakeFromNib 和 initWithCoder。

我不希望这样,因为这些初始化可能会延迟到第一次实际选择选项卡。

请指教。

【问题讨论】:

【参考方案1】:

对于您正在寻找的行为组合,我认为解决方案是在-viewDidLoad 中执行您的初始化,从而尽可能晚地推迟它,但有条件地这样做,这样您就不会在控制器重新加载时重新初始化您的数组它的观点。

【讨论】:

以上是关于对于从 IB 加载的 UItableViewController,非视图相关的初始化代码放在哪里的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Modal ViewController 重新加载父 UITableViewController 中的数据

从 nib 文件加载

何时加载和设置 min/maxTrackImages 以便它们出现在 IB 中

何时启动/加载 UIViewController 元素(通过 Main.storyboard 中的 IB 创建)?

滚动视图加载内容的不同部分不一致? (iOS)

xib 指定的位置在 UIView 加载时移动?