我期待了解如何正确地继承UIView
使用自定义init方法传入的参数。创建自定义的UIView init方法与参数
我已阅读UIView
类参考文档在这里:https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html
目前正在在UIViewController
创建了UIView,并且可以移动/重构到它自己的子类。此外,目前视图是完全用代码创建的,框架是通过添加到视图本身的约束来计算的。
文档说以下
initWithFrame:方法 - 建议您实现此方法。除了此方法之外,您也可以实现自定义初始化方法。
问题
由于我没有为视图中创建一个框架为起点/也不是从XIB什么是正确处理的子类加载这个?如果这是正确的,我需要进一步改变这种
-(id)init {
NSLog(@"%s",__PRETTY_FUNCTION__);
self = [super init];
if (self) {
// Init code
[self spmCustomInit];
}
return self;
}
-(void)spmCustomInit {
NSLog(@"%s",__PRETTY_FUNCTION__);
}
:
这会是正确的。当视图被创建时,它会根据信息创建一些子视图。此外,布局根据难度级别而不同。 进一步的问题
如何创建一个自定义的进一步init方法,我传递的参数?
例如,如果我创建了一个方法调用,
spmInitWithWord:(NSString *)word difficulty:(GameTurnDifficulty)difficulty
怎样的标准init方法,然后调用。当我最初创建视图时,我会调用这个自定义的init吗???
谢谢@Duncan C--其实在这种情况下,对于IB来说视图太高级了,至少我认为它会是。我动态地创建基于传递来创建此自定义视图的单词的子视图(平铺图),因此视图通常非常不同。在你的回答中,你会谈到创建自定义'doInitSetup',然后从'initWithFrame'等方法调用该方法。我的问题是我需要一个完全自定义的init(最后一个问题),比如'initWithWord'。如果我实现了这个方法,我应该像下面的其他答案一样,调用标准的自启动方法。如果有助于解释,请使用代码示例? – StuartM