iOS中initWithNibName 和 loadNibNamed 的區別和聯絡(參考孤獨的豆沙包)

來源:互聯網
上載者:User

標籤:

   

// 以後自訂控制器建議寫這個方法,讓控制器一建立出來就擁有某些屬性 // init方法內部預設會調用initWithNibName方法

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        self.hidesBottomBarWhenPushed=YES; //當push到下一個頁面時隱藏底部導航條

    }

    return self;

}

1. ShowViewController的initWithNibName方法

ShowViewController* showMessage = [[ShowViewController alloc]

  initWithNibName:@"ShowViewController" bundle:nil];

  self.showViewController = showMessage;

2.VideoCellController的loadNibNamed方法

NSArray * nib = [[[NSBundle mainBundle]loadNibNamed:@"Save3ViewController" 

                              owner:self options:nil] lastObject];

 

1.他們的聯絡:可以使用此方法載入使用者介面(xib檔案)到我們的代碼中,這樣,可以通過操作這個載入進來的(xib)對象,來操作xib檔案內容。

2.區別:

(1).initWithNibName要載入的xib的類為我們定義的視圖控制器類 

  loadNibNamed要載入的xib的類為NSOjbect。

(2).載入方式不同

 initWithNibName方法:是消極式載入,這個View上的控制項是 nil 的,只有到 需要顯示時,才會不是 nil

loadNibNamed方法:即時載入,用該方法載入的xib對象中的各個元素都已經存在。

3.initWithNibName:nibNameOrNil得執行順序:

  1. supper :  
  2. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  3. if (self) {  
  4. set   param=@“supper-A”  
  5. NSLog(@“A-initNIb”);  
  6. }  
  7. viewDIdLoad  
  8. {  
  9. [super viewDidiLoad];  
  10. NSLog(@“A-view”);  
  11. NSLog(param);  
  12. }  
  13.   
  14. sub:  
  15. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  16. if (self) {  
  17. set   param=@“sub-B”  
  18. NSLog(@“B-initNIb”);  
  19. }  
  20. viewDIdLoad  
  21. {  
  22. [super viewDidiLoad];  
  23. NSLog(@“B-View”);  
  24. NSLog(param);  
  25. }  

執行sub時輸出順序:

A-initNIb   

A-view

supper-A

B-View

supper-A

B-initNIb

sub-initWithNibName: 裡調用supper的initWithNibName:

superclass的initWithNibName方法結束,表示nib檔案已載入,則調用sub的 viewDidLoad方法。於是應調用[subclass viewDidLoad]方法。

subclass的viewDidLoad方法又調用了supclass的viewDidLoad方法。

最後才是initWithNibName方法剩餘的代碼

結論,你在sub裡面設定的param=sub-B,並沒有起作用輸出,因為,在設定之前,sub的view已經執行過了。

 

iOS中initWithNibName 和 loadNibNamed 的區別和聯絡(參考孤獨的豆沙包)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.