2012-09-04 34 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

那麼他將如何使用他的觀點在筆尖? –