对于从 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 中的数据
何时加载和设置 min/maxTrackImages 以便它们出现在 IB 中