我很困惑。我有一个带有 BarItem 的导航控制器,它打开第一个视图。完成一些工作后,我希望此视图消失,并希望打开第二个视图。
- 根视图:导航控制器
- 第一个视图:活动指示器,将一些数据放在一起
- 第二个视图:MFMailComposeViewController
在根视图中,BarItem 运行这些行来打开第一个视图:
IndicatorViewController *indicator = [[IndicatorViewController alloc] initWithNibName:@"IndicatorViewController" bundle:nil];
indicator.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentModalViewController:indicator animated:YES];
第一个视图(IndicatorViewController)做了一些工作并最终运行
[self dismissModalViewControllerAnimated:YES];
这工作正常。但是 - 我如何打开第二个视图?
我试过这个:
我打开第二个视图。关闭第二个视图后,我的第一个视图再次弹出(因为它仍然存在)并在此时被解雇。这段代码放在第一个视图中:
- (void) viewDidAppear:(BOOL)animated {
static BOOL firstTime = YES;
if (firstTime) {
//do stuff that takes some time (that's why I show the indicator)
MailViewController *controller = [[MailViewController alloc] init];
if (controller)
[self presentModalViewController:controller animated:YES];
firstTime = NO;
} else {
[self dismissModalViewControllerAnimated:YES];
}
}
由于第一个视图再次弹出,用户可以在第二个视图关闭后再次看到指示器 - 这不是我想要的。
我在这里想念什么?这样做的更好方法是什么?