2012-10-31 30 views
1

我與我的故事板基礎-IOS應用一些基本的掙扎。的UIView,有一些基本的掙扎(Xcode中,iOS版)

我想加載一些的UIView的它們在筆尖文件(廈門國際銀行)建造起來。如果我加載視圖,將調用initWithCoder-方法。

現在我想加載「綠色」的意見;我讀,我能夠把一些其他的初始化在initWithCoder - 但只有「新」的對象而已,即關於內存使視圖本身,像self.backgroundColor(也許該對象是不完整的,在初始化那點)。

哪裏是最好的地方添加一些東西,如setBackgroundColor,setCornerRadius在視圖類本身?

+0

- (void)viewDidLoad; – Majster

+1

否:-)我正在使用UIView而不是UIViewController。在UIView的類中沒有viewDidLoad,viewWillAppear等。 – Thomas

+1

@Thomas'的initWithCoder:'或'initWithFrame:方法'**應該工作正常**如果沒有你肯定搞砸了的東西 - 我建議你測試它創建一個空白的項目。您也可以*以編程方式創建所有這些*並完全避免使用Interface Builder。 – 2012-10-31 08:15:21

回答

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. 

此外,在筆尖文件的視圖,設置爲MyCustomView,而不是UIView。 這兩行後,您可以設置任何你想要的值。但是,請注意,如果您爲超級設置幀,則它將被xib文件中的值覆蓋。因此,在裝入筆尖之後更好地設置所有內容,而不是之前。

據我所知,UIView加載沒有回調,因爲viewDidLoadUIViewController

希望這會有所幫助。

乾杯!

編輯:

你可以做這樣的事情:

- (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]; 
    } 
} 

,然後只用該方法initWithInfo: Body:

+0

是的,我按照你的方式加載視圖。 但是,我喜歡設置顏色的類裏面,而不是外部的(我會在外面,如果我的兩行代碼後設置的顏色...) – Thomas

+0

檢查我的編輯答案。我希望我能正確理解你的問題。 – George