2011-05-23 57 views
0


我从另一个NIB成功显示子视图,我在MainView上有2个按钮和1个UIView,当我点击按钮1时会在UIView上显示NIB1,然后我按钮2会在UIView上显示NIB2,但当我再次KLICK按钮1倍的UIView不再显示NIB1,但仍NIB 2,这是我的代码:
更改UIView的子视图? [关闭]

更新解决
在.h文件中

IBOutlet UIView *bottomView; 

在.m文件

-(IBAction) handleButton1{ 
    for (UIView *t in bottomView.subviews) { 
     [t removeFromSuperview]; 
    } 
    if (![nib1 isViewLoaded]) { 
     nib1 = [[NIB1 alloc] initWithNibName:@"NIB1" bundle:nil]; 
    } 
    [bottomView addSubview:nib1.view]; 
} 

-(IBAction) handleButton2{ 
    for (UIView *t in bottomView.subviews) { 
     [t removeFromSuperview]; 
    } 
    if (![nib2 isViewLoaded]) { 
     nib2 = [[NIB2 alloc] initWithNibName:@"NIB2" bundle:nil];  
    } 
    [bottomView addSubview:nib2.view]; 


} 

如何在我的代码上用另一个NIB刷新UIView?
谢谢,

我有解决这种情况下,我从这个http://stackoverflow.com/questions/3915729/refreshing-cell-content-after-deleting-cells
使用删除所有子视图上的MainView:

for (UIView *t in bottomView.subviews) { 
     [t removeFromSuperview]; 
    } 


我希望这个代码帮助任何人:)。

回答

2

您必须删除第一个视图视图[theViewYouDontWantToShow removeFromSuperview]。可以使用。

这里追加的只是你添加了一个视图(这个工作),在第一个视图的顶部添加了另一个视图(这也适用),但是你又添加了第一个视图。视图不会改变,因为它已经存在。

+0

嗨gcamp,非常感谢您的回答,我已经测试了这个'[bottomView bringSubviewToFront:nib1/2.view]'但是重叠,nib2显示在nib1的底部。我测试'[theViewYouDontWantToShow removeFromSuperview]',但这是错误“NIB1可能无法响应removeFromSuperview”,任何建议? – user752846 2011-05-24 00:24:26

+0

你实际上是在试图移除viewController(NIB1),而不是视图本身。你应该把'[nib1.view removeFromSuperview]'...你也可以接受或投票答案,如果它帮助你。 – gcamp 2011-05-24 03:12:49