我有一个使用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];
}
但是我得到了错误:
预期':'之前'。' ?
答案 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];
}