我在基于故事板的iOS应用程序中遇到了一些基础知识。
我喜欢加载一些在NIB-Files(xib)中构建的UIView。如果我加载视图,将调用initWithCoder
- 方法。
现在我喜欢加载“绿色”视图;我读过,我能够在initWithCoder
中进行一些其他的初始化 - 但只有“新”对象,没有什么,关于View本身,就像内存原因中的self.backgroundColor一样(也许对象不是' t完成初始化)。
在view-Class本身中添加某些内容的最佳位置在哪里,例如setBackgroundColor
,setCornerRadius
?
答案 0 :(得分:0)
我这样做:
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:nil options:nil];
self = [nibViews objectAtIndex: 0]; //here it would be best practice to loop through nibViews and get the first view that is member of your class.
此外,nib文件中的视图设置为MyCustomView
而不是UIView
。
在这两行之后,您可以设置所需的任何值。但请注意,如果您为超级设置框架,它将被xib文件中的值覆盖。所以最好在加载笔尖后设置所有内容,而不是之前。
据我所知,[{1}}加载没有回调,因为UIView
是viewDidLoad
。
希望这有帮助。
干杯!
编辑:
您可以这样做:
UIViewController
然后只使用- (id)initWithInfo:(MyInfoClass *) selectedInfo Body:(NSString *) _body
{
if ((self = [super init]))
{
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"MyCustomClass" owner:nil options:nil];
self = [nibViews objectAtIndex: 0];
[self setInfo:selectedInfo];
[self setBody:_body];
}
}
方法。