2012-02-07 78 views
2

我想知道如何以編程方式將UI元素添加到現有的nib文件。如何以編程方式將UI元素添加到現有的nib文件

如果我在loadView方法中以編程方式創建視圖並添加如下代碼,則標籤將正確顯示。

self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 

UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0,2,150,100)]; 

[self.view addView:lbl]; 

但如何將標籤添加到現有的nib文件?

+1

你需要使用'viewDidLoad',它在視圖加載完成後調用(來自'nib')。如果您在代碼中完全設置視圖,則只能使用'loadView'方法。 – 2012-02-07 11:30:56

回答

2

正如Paul.s所指出的,您需要在viewDidLoad方法中執行您的自定義代碼。

從Apple文檔。

該視圖控制器已將其關聯視圖加載到內存後調用此方法。不管 是否將視圖存儲在nib文件中,或者在loadView方法中以編程方式創建 ,都會調用此方法。此方法通常用於對從nib文件加載的視圖執行其他初始化步驟 。

所以,在你的控制器,你可以這樣做:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // your other views here 

    // call addSubview method on self.view 
} 

你爲什麼要這麼做?因爲在這裏您確定視圖已經加載到內存中並且插座已正確設置。

相反,約loadView方法

如果重寫此方法,以手動創建你的意見,你 應該這樣做並分配層次的根視圖到 視圖屬性。 (您創建的視圖應該是唯一的實例,並且不應該與其他視圖控制器對象共享 )。

一個例子可以是:

- (void)loadView 
{ 
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; 
    UIView *contentView = [[UIView alloc] initWithFrame:applicationFrame]; 
    contentView.backgroundColor = [UIColor whiteColor]; 

    self.view = contentView; 

    // call addSubview method on self.view 
} 

我建議你閱讀View Controller Programming Guide for iOS

希望它有幫助。

1

viewDidLoad

UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0,2,150,100)]; 
[self.view addSubView:lbl]; 
1

據我所知,以編程方式修改筆尖文件是不可能的。

您可以將視圖添加到UIViewController方法的viewDidLoad中。

相關問題