2012-09-12 100 views
0

我試圖做一個非常簡單的事情 - 我已經得到了整個應用程序和一個小的另外一個XIB文件主要XIB文件。如何將子視圖添加到class2上的class1視圖?

我想小景(廈門國際銀行稱爲 「additionalView.xib」)出現在第XIB( 「ViewController.xib」)。

我已經成功在「ViewController.m」這樣做,但我希望有更多 - 我想從「additionalView.m」做

有一個我創建一個名爲「的OpenView:」方法「 additionalView.m」,它看起來像這樣:


-(IBAction)openView:(id)sender 

{ 

    ViewController *vc = [[ViewController alloc] init]; 

    NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"additionalView" owner:self options:nil];  

    UIView *nibView = [nibObjects objectAtIndex:0]; 

    [vc.view addSubview:nibView]; 

} 

的方法被調用和線正在調試器讀取 - 但沒有任何反應。 沒有崩潰 - 沒有錯誤 - 在大視圖中沒有小視圖。

這是爲什麼?

我知道,最後一行大概是什麼 擰緊了一切,但我不知道如何正確地把它。

回答

1

嘗試

[self.view addView:view.vc]; 

不過,我不知道什麼是你在這裏查看結構。你說你的 - (IBAction)openView:(id)sender是在你的「additionalView.m」中,但它不是主視圖控制器,對嗎?您需要在主控制器中執行此操作,因此基本上將openView:方法移動到您的ViewController.m

而且通常每個視圖都需要單獨的視圖控制器來保持事物整潔和分離,因此additionalView.m應該是的UIViewController的一個實例,然後您可以從您的主視圖中創建如下:

-(IBAction)openView:(id)sender 

{ 

AdditionalView *vc = [[AdditionalView alloc] initWithNibName:@"additionalView"]; 


[self.view vc.view]; 

} 
+0

你是對的。但問題是我在ViewController.m中有很多行,我希望通過使用不同的類來組織一些東西(比如「additionalView.m」)。這就是爲什麼我想知道如何從另一個類引用ViewController.xib。 –

1

您的問題是ViewController *vc = [[ViewController alloc] init];創建一個新視圖控制器。因爲它是新的,所以它不是管理顯示的視圖控制器層次結構中已經存在的那個。

你的方法需要訪問現有的視圖控制器。它是如何實現的,這取決於你的應用程序的結構和哪個對象具有對原始控制器對象的引用。

1

你有選擇...首先,你不需要創建一個視圖控制器VC,如果你只是需要的視圖。創建一個uiview並添加它。 選項1:按照上面的建議傳遞給應用vc,然後: [appVC.view addsubview:additionalView]

這會將它添加到main。

使用的應用程序代理,你可以稱之爲委託,並添加您的查看到當前顯示視圖視圖控制器經理/ REF。

希望這會有幫助

相關問題