2012-09-04 36 views
0

我知道如何布局,并在厦门国际银行创建一个UIView,
但现在我有一个自定义视图(UIView的子视图),
它有不同的init方法,如:如何使用不同的init方法在XIB中创建自定义视图?

-(id)initWithArg1:(int) arg2:(NSString *) arg3:(NSArray *) ... 

+(id)viewWithArg1:(int) arg2:(NSString *) arg3:(NSArray *) ... 

当我在xib属性右键栏中将视图的类设置为我的,
我的自定义init方法没有出现,无处设置。

那么如何?非常感谢。

回答

0

卡尔是正确的。

在本质上,如果一个对象从厦门国际银行(以下你在问题中提到的步骤)实例然后被调用初始化剂是

- (id)initWithCoder:(NSCoder *)aDecoder; 

您可以压倒一切可能的证实了这一点为自己初始化程序并在它们中放入断点以查看被调用的内容。所以,如果你从XIB初始化它有种暗示,你将有一个该对象的实例(不一定是这样);但是,如果您需要大量自定义对象的实例,则可以考虑返回到自定义的初始化程序,并通过编程方式创建所有内容来放弃XIB工作。

实质上,想想你将如何使用该对象。这会告诉你是否需要考虑以编程方式创建自己的视图的自定义初始化程序。

+0

是的,我认为它的工作原理是确认并实施该方法。我需要的只是布置我的视图,我可以用编程方式设置其他变量。此外,我可以将它们设置为可见的,就像UIKit中的标准对象一样,设置标签的文本,颜色或其他东西?谢谢。 – user1610768

+0

很高兴能有所帮助。标记和接受总是会有很长的路要走;-) – Damo

1

您将需要覆盖initWithCoder:并使用一些合理的默认值来完成指定的初始化程序正在执行的操作。

例如

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    if (self = [super initWithCoder:aDecoder]) { 
     _value1 = 0; 
     _value2 = @"Hi!"; 
     /* and so on */ 
    } 

    return self; 
} 
0

我觉得你并不需要设置在厦门国际银行init方法,在其他地方,你只需要调用init通过这样的代码:

[[yourView alloc] initWithArg1:arg1 Arg2:arg2]; 
+1

那么他将如何使用他的观点在笔尖? –