0

我有一个使用 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];

然后我有一个带有按钮的主屏幕,然后当用户点击它时,它会向他们展示另一个如上所述的模式视图控制器。在这个视图上有一个按钮,上面写着 BUY。他们使用单击此按钮,然后 StoreKit 执行此操作,一旦付款完成,我想摆脱上面的两个模态控制器并留下主菜单屏幕。

任何想法..我试过如上

编辑2:

@乔丹谢谢,

但不确定我这样做是否正确。我理解上面的代码。

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

所以考虑到这一点,我如何回到我的主菜单。

我尝试了以下方法:

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

但我得到了以下错误:

预期 ':' 在 '.' 之前 ?

4

3 回答 3

1

这应该有效。

// view is equal to your main view    
NSArray *subviews = [view subviews];
for (int i=0; i<[subviews count]; i++)
{
   [[subviews objectAtIndex:i] removeFromSuperview];
}
于 2010-03-10T12:19:28.447 回答
0

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

 [self.navigationController popToRootViewControllerAnimated:YES];

您要么将 UIViews 添加到 UIViewController,在这种情况下使用我上面的代码,要么您在 UIViewController 之上推送视图(例如 pushViewController),在这种情况下使用此处的代码。

于 2010-03-10T14:16:06.663 回答
0

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

 NSArray *ChildViews = [ParentView subviews];
 for (UIView *childView in ChildViews) {
   [childView removeFromSuperview];
 }
于 2013-07-10T16:18:07.283 回答