UIViewController 最佳实践——加载

Posted

技术标签:

【中文标题】UIViewController 最佳实践——加载【英文标题】:UIViewController best practice - loading 【发布时间】:2012-08-28 11:43:05 【问题描述】:

我有一个带有一些 UI 接口的简单视图控制器。我正在使用 ARC 我在 viewDidLoad 中进行了其他设置,例如设置标签属性、if 语句以动态调整某些组件的大小等。我的问题是 viewDidLoad 是放置此代码的最佳位置吗?我已经发布了我在该方法中拥有的一些代码的示例。谢谢。

self.messageTitleLabel.numberOfLines = 1;
self.messageTitleLabel.adjustsFontSizeToFitWidth = YES;
self.messageTitleLabel.minimumFontSize = 15.0f;
[self someMethodToReframeLabelHeight];

【问题讨论】:

对于这样的东西,为什么不在界面生成器中这样做呢? 【参考方案1】:

是的,很棒的地方。回想一下,在 ios 中,由于内存压力,系统可能会卸载您的视图,因此您稍后可能会再次收到此消息。因此,在那里有代码来调整新加载的视图是完美的。

【讨论】:

【参考方案2】:

正如 David 所说,是的,在这里执行额外的设置是完美的。但请注意,在viewDidLoad 中,尚未为其视图设置几何图形。因此,如果您需要在控制器视图中安排子视图的位置,请使用 viewWillAppearviewDidAppear

希望对您有所帮助。

【讨论】:

【参考方案3】:

是的。正如 David H 所提到的,viewDidLoad 是出于内存原因的好地方 - 如果您的应用程序收到内存警告,您的视图将在下次加载时再次设置。不过,使用viewDidLoad 的另一个重要原因是,如果您尝试将上述代码放在initinitWithWhatever: 中,您会遇到一些奇怪的问题。原因是在init方法中,视图还没有被创建并从它的.nib中唤醒,从那里访问它会打乱整个视图控制器循环。如果您不使用 .nib,您还可以在 -loadView 中进行一些基本设置。只要确保在您覆盖其中一种方法时调用super

【讨论】:

以上是关于UIViewController 最佳实践——加载的主要内容,如果未能解决你的问题,请参考以下文章

从 XIB 中重构控件和功能的最佳实践

UIPickerView 最佳实践?

Storyboard segue 崩溃和 UINavigationController 最佳实践

Angular 2+ - 数据加载:最佳实践

无限滚动加载最佳实践

设置 UITableView 委托和数据源时的最佳实践