2012-08-28 134 views
1

我有一个简单的视图控制器与一些用户界面插座。我正在使用ARC我做了viewDidLoad的其他设置,如设置标签属性,if语句以动态调整某些组件等。我的问题是viewDidLoad放置此代码的最佳位置?我已经发布了一些我在该方法中使用的代码。谢谢。UIViewController最佳做法 - 加载

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

对于这样的东西,为什么不在界面构建器中这样做? –

回答

1

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

0

是的。正如大卫H提到的,viewDidLoad是一个内存原因的好地方 - 如果您的应用程序收到内存警告,您的视图将在下次加载时再次设置。不过,使用viewDidLoad的另一个重要原因是,如果您尝试将上面的代码放在initinitWithWhatever:中,您将遇到一些奇怪的问题。原因在于,在init方法中,该视图尚未从其.nib创建和唤醒,并且从那里访问视图会破坏整个视图控制器循环。如果您不使用.nib,您还可以在-loadView中进行一些基本设置。只要确保您在任何时候重写其中一种方法时致电super

1

大卫评论说,是的,这是完美的在这里执行额外的设置。但请注意,在viewDidLoad中没有为其视图设置几何图形。因此,如果您需要在控制器视图内安排子视图的位置,请使用viewWillAppearviewDidAppear

希望有所帮助。