2014-06-10 57 views
0

我有一個UIView,其中包含3個其他子視圖。在開始的時候,我不單獨添加這3子視圖到UIView的,而不是我創造了他們如下:添加子視圖(在xib中創建)到UIView中

enter image description here

我要動態添加子視圖。因此,我想這個代碼如下:

添加到的MainView的UIViewController

 
UINib *nib = [UINib nibWithNibName:@"MainView" bundle:nil]; 
MainView* mainView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]; 
[self.view addSubview:mainView]; 

它的確定爲止。但現在,在MainView類中,我添加了子視圖,我碰到了

 
UINib *nib = [UINib nibWithNibName:@"SubView1" bundle:nil]; 
SubView1* subView1 = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]; 
[self addSubview:subView1]; 

我的代碼出了什麼問題?

+0

你可以有3子視圖,並呼籲該意見需要的時候。隱藏剩下的部分,並將你想要展示的視圖展現出來。 – Manthan

回答

2

我不知道它爲什麼會崩潰,因爲我從來沒有使用過這種類型。因此,我建議你試試下面

UIView *mainView=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:0]; 
[[self view] addSubview:mainView]; 

在以同樣的方式

UIView *subView1=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:1]; 
[mainView addSubview:subView1]; 

UIView *subView2=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:2]; 
[mainView addSubview:subView2]; 

UIView *subView3=[[[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil] objectAtIndex:3]; 
[mainView addSubview:subView3]; 

我相信它會在挑釁你的主視圖中工作

0

它看起來像我,你把所有的子視圖添加到相同的筆尖(或xib)文件。因此沒有名稱爲「SubView1」的筆尖。

爲了解決這個問題要麼添加單個XIB文件對每個視圖:

文件→新建→文件→...用戶界面→查看

,並依此命名這些文件或保留引用您的意見你的視圖控制器類。您可以通過爲視圖創建網點來實現這一點。或者,您可以爲每個視圖分配一個標籤,並使用UIView方法-viewWithTag:獲得對該特定視圖的引用。

但是,我會建議在他的評論中使用@Manthan建議的方法 - 如果可能:在界面構建器中將所有子視圖添加到您的mainView中,並將其hidden屬性設置爲YES。然後,當您希望這些視圖在您的代碼中使用[yourView setHidden:NO];時。

如果這對你不起作用,我建議你使用第一個方法與單獨的xib文件。

相關問題