【发布时间】:2014-05-01 08:45:10
【问题描述】:
我想覆盖我的自定义视图控制器的loadView 方法,以便自定义正在显示的视图。对于该自定义视图,我想应用在 Storyboard 编辑器中设置的背景颜色。
例如,如果我像这样实现 loadView:
-(void)loadView{
self.view = [[MyCustomView alloc] init];
//Do some initialisation work for the custom view
//...
}
然后生成的视图具有黑色背景。但是,如果我只调用默认实现:
-(void)loadView{
[super loadView];
}
然后橙色背景颜色(见截图)被应用到视图。如何获得在 故事板编辑器 中设置的颜色?我想做这样的事情(伪代码):
-(void)loadView{
self.view = [[MyCustomView alloc] init];
self.view.backgroundColor = [self colorThatWasSelectedInStoryboardEditor];
//Do some initialisation work for the custom view
//...
}
苹果如何在loadView的默认实现中实现这一点?
【问题讨论】:
-
设置颜色应该在
viewDidLoad,而不是loadView。 -
我不介意在
viewDidLoad中这样做。这对我来说非常好。我只希望背景颜色是用户在 storyboard editor(界面构建器)中选择的颜色。正如我上面的代码应该指出的那样,loadView似乎是 Apple 的 默认实现将颜色应用于视图的地方。 -
我很困惑。为什么要做什么?如果您在代码中什么都不做,不应该自动设置颜色吗?我不使用IB,所以我不确定。但我认为,如果你不在代码中搞砸,在 IB 中设置东西会起作用。
-
如果我不触摸
loadView,那么颜色会按预期自动设置。但是,由于我想使用MyCustomView而不是默认的UIView,我必须覆盖loadView。是的,您会认为即使在覆盖loadView时也会自动应用背景颜色。不会的。 -
IB 中没有办法告诉它视图应该是自定义类吗?还是仅适用于视图控制器而不适用于他们的视图?
标签: ios objective-c uiviewcontroller uistoryboard