【问题标题】:UIViewController best practice - loadingUIViewController 最佳实践——加载
【发布时间】: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];
【问题讨论】:
标签:
ios
uiviewcontroller
uikit
viewdidload
【解决方案1】:
是的,很棒的地方。回想一下,在 iOS 中,由于内存压力,系统可能会卸载您的视图,因此您稍后可能会再次收到此消息。因此,在那里有代码来调整新加载的视图是完美的。
【解决方案2】:
正如 David 所说,是的,在这里执行额外的设置是完美的。但请注意,在viewDidLoad 中,尚未为其视图设置几何图形。因此,如果您需要在控制器视图中安排子视图的位置,请使用 viewWillAppear 或 viewDidAppear。
希望对您有所帮助。
【解决方案3】:
是的。正如 David H 所提到的,viewDidLoad 是出于内存原因的好地方 - 如果您的应用程序收到内存警告,您的视图将在下次加载时再次设置。不过,使用viewDidLoad 的另一个重要原因是,如果您尝试将上述代码放在init 或initWithWhatever: 中,您会遇到一些奇怪的问题。原因是在init方法中,视图还没有被创建并从它的.nib中唤醒,从那里访问它会打乱整个视图控制器循环。如果您不使用 .nib,您还可以在 -loadView 中进行一些基本设置。只要确保在您覆盖其中一种方法时调用super。