2013-05-28 109 views
0

假設我有AViewcontrollersBviewControllers。我添加了一個BViewcontrollers視圖作爲Aviewcontrollers視圖的子視圖。我想從AViewController視圖中刪除BviewController視圖。從uiviewcontroller中刪除自定義視圖

我想以這種方式去除'b視圖'但它不成功。

AViewcontrollers *aVC = [[AviewControllers alloc] initWithNibName:@"AViewcontrollers" bundle:nil]; 
BViewcontrollers *bVC = [[BviewControllers alloc] initWithNibName:@"BViewcontrollers" bundle:nil];; 

[aVC addsubView:bVc.view]; 

    //Trying to remove the 'b view' from the 'a view' 
for (UIView *subview in [[aVC view] subviews]) { 
     NSLog(@"Subview::%@",[subview class]); 
     if ([subview isMemberOfClass:[BViewControllers class]]) { 
      [subview removeFromSuperview]; 
      NSLog(@"This subview Belongs to tools view controller"); 
     } } 

回答

0

希望你的bViewController有一個對視圖的引用?如果是的話,你可以撥打:

[bVC.view removeFromSuperview] 
+0

我會注意到,這種設計模式看起來有點脆弱。您可能需要考慮將此視圖完全由AviewController控制。 – atreat

+0

我們添加一個控制器,並刪除應用程序進入background.we時沒有參考bvc.view – phani

3

明顯的答案是:

[bVC.view removeFromSuperview]; 

上面代碼的問題是,你檢查,如果認爲是BviewControllers一個BviewControllers類,而不是一個視圖。如果視圖有特定類別(如Bview),則可以執行該檢查(if ([subview isMemberOfClass:[BView class]]))。

使用isMemberOfClass:也很特殊所以你平時最好使用isKindOfClass:

+0

我們如何驗證BView?我們沒有它的一個實例,我們在一個視圖中添加和在另一個視圖中刪除 – phani

+0

對不起,我不明白這個問題。您需要一些方法來識別視圖,最好是對其的引用或已知的標記值。試圖比較這個班級是最不可靠/可維護的。 – Wain

0

考慮加入BViewController作爲AViewController的孩子,除了加入B的看法是A的子視圖這樣做將允許轉發自轉事件等等;喜歡的東西:

AViewController *aVC = [[UIViewController alloc] init]; 
BViewController *bVC = [[UIViewController alloc] init]; 

[aVC addChildViewController:bVC]; 
[bVC didMoveToParentViewController:aVC]; 

[aVC.view addSubview:bVC.view]; 

然後,當你要刪除的視圖(和控制器),您可以通過子視圖控制器迭代。 (或以其他方式存儲指針)

for (UIViewController *vc in aVC.childViewControllers){ 
    if ([vc isKindOfClass:[BViewController class]]){ 
     [vc.view removeFromSuperview]; 
     [vc removeFromParentViewController]; 
     [vc didMoveToParentViewController:nil]; 
    } 
} 
+0

我們正在開發一款iPad和iPhone應用程序。在ipad中,我們將它提供給popovercontroller並使用我們解僱的通知。在iPhone的情況下,我們將它添加爲子視圖。在我的項目中,我們正在添加一個視圖控制器,並刪除應用程序去背景 – phani

+0

我仍然會這樣做的iPhone,這是一個很好的做法,保持viewcontroller層次結構與視圖層次結構同步。對於iPad彈出窗口,您已經將視圖控制器傳遞給彈出窗口,所以它自動處理其餘部分。 – Nick

相關問題