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
中,尚未为其视图设置几何图形。因此,如果您需要在控制器视图中安排子视图的位置,请使用 viewWillAppear
或 viewDidAppear
。
希望对您有所帮助。
【讨论】:
【参考方案3】:是的。正如 David H 所提到的,viewDidLoad
是出于内存原因的好地方 - 如果您的应用程序收到内存警告,您的视图将在下次加载时再次设置。不过,使用viewDidLoad
的另一个重要原因是,如果您尝试将上述代码放在init
或initWithWhatever:
中,您会遇到一些奇怪的问题。原因是在init
方法中,视图还没有被创建并从它的.nib中唤醒,从那里访问它会打乱整个视图控制器循环。如果您不使用 .nib,您还可以在 -loadView
中进行一些基本设置。只要确保在您覆盖其中一种方法时调用super
。
【讨论】:
以上是关于UIViewController 最佳实践——加载的主要内容,如果未能解决你的问题,请参考以下文章