2011-12-29 64 views
0

我的viewController视图中有一个UIImageView对象,该对象预装了一个轮子图片。但是,轮子的旋转取决于一天中的时间。所以当程序启动时,我喜欢通过当前时间的正确旋转来初始化轮子。我试图在控制器的viewDidLoad方法中进行旋转。虽然这可行,但人们可以根据时间明显地看到初始位置并切换到新位置。使用目标c以编程方式初始化故事板中的对象

我喜欢初始化是不可见的,也就是在视图加载之前发生的初始化。我应该在哪里做?

+0

车轮的初始化是否异步发生?添加一些代码会很方便。 – thvanarkel 2011-12-29 18:23:13

回答

2

我喜欢初始化是不可见的,那就是在视图加载之前发生的初始化 。我应该在哪里做?

无论何时控制器的view属性被访问,并且在该点调用-viewDidLoad,视图控制器的视图都会被加载。把你的代码设置在-viewDidLoad的视图是正确的事情。在加载之前,您无法初始化视图,因为它不存在直到它已加载,但您应该能够在显示之前对其进行设置。

如果您在-viewDidLoad中没有执行任何操作会导致轮子设置延迟到稍后的时间点,那么您可以尝试稍早加载视图控制器的视图。例如,您可以在您的视图控制器中实现-prepareForSegue:sender:,以便它访问view属性,这会导致视图被加载。

+0

您是否只是在冗余的代码行中访问该视图以强制其加载?这可以接受吗?目标VC中的用户界面对象在prepareForSegue中无法使用,这让我非常烦恼,我没有意识到让它们可用是很容易的! – jrturton 2011-12-30 08:45:58

0

你也可以创建一个继承自UIView的自定义类,并在didMoveToWindow方法中设置一些自定义的inits(在你的情况下设置一个旋转变换)。