从SubView中删除视图

时间:2010-03-10 12:07:51

标签: iphone uiviewcontroller subview

我有一个使用In App功能的应用程序。

-(void) completeTransaction: (skPaymenttransaction *)transaction{



}

当调用上述方法时,我想删除所有子视图并返回主菜单窗口(我的应用程序中的第一个视图)。

有人能建议最干净,最好的方法吗?

干杯

修改

只是为了清楚

我不确定这是否有所不同,但我有我的主菜单屏幕,然后使用输入按钮进行以下操作。

UIViewController *controller = [[UIViewController alloc] initWithNibName:@"NibFile" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];

然后我有一个带有按钮的主屏幕,然后当用户点击它时,它会向他们呈现另一个模态视图控制器,如上所述。在这个视图上是一个按钮,上面写着“买入”。他们使用点击这个,然后StoreKit开始营业,一旦付款完成,我想摆脱上面的两个模态控制器,并留在主菜单屏幕。

任何想法..我已经尝试过如上

编辑2:

@Jordan谢谢,

但不确定我是否正确地做到了这一点。我理解上面的代码。

但是,当我启动我的应用程序时,我的app委托加载了一个viewcontroller,这是我的主菜单。然后我有一个按钮,将我带到另一个视图,如果用户单击未解锁的功能,则会显示我的功能,然后显示另一个视图控制器,并显示该存储。

因此,请记住如何返回主菜单。

我尝试了以下内容:

NSArray *subviews = [myAppdelegate.viewcontroller.view subviews]; 
for (int i=0; i<[subviews count]; i++) 
{ 
   [[subviews objectAtIndex:i] removeFromSuperview]; 
} 

但是我得到了错误:

预期':'之前'。' ?

3 个答案:

答案 0 :(得分:1)

这应该有用。

// view is equal to your main view    
NSArray *subviews = [view subviews];
for (int i=0; i<[subviews count]; i++)
{
   [[subviews objectAtIndex:i] removeFromSuperview];
}

答案 1 :(得分:0)

如果你在谈论UIViewControllers而不是subViews(它们是不同的),那么你可以使用:

 [self.navigationController popToRootViewControllerAnimated:YES];

你要么将UIViews添加到UIViewController,在这种情况下使用我上面的代码,或者你在UIViewController上推送Views(例如pushViewController),在这种情况下使用这里的代码。

答案 2 :(得分:0)

我们必须在数组中删除视图,以便我们可以通过枚举删除所有内容

 NSArray *ChildViews = [ParentView subviews];
 for (UIView *childView in ChildViews) {
   [childView removeFromSuperview];
 }