我有一个ipad应用程序。
我试图用整个屏幕打开视图2(一种推视图)。推送视图或UIModalPresentationFullScreen
通常如何。但我的基本视图是视图1也是模态视图。
所以我试图打开视图2,当视图1被解雇时......
- (void) handleNewButton :(int)id
{
[self dismissViewControllerAnimated:YES
completion:^{
NewViewController *View2 = [NewViewController alloc] init];
View2.modalPresentationStyle = UIModalPresentationFullScreen;
View2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController: View2 animated:YES completion:nil];
}];
}
但是我的观点2没有打开。我知道我不能做推视图。但有没有办法实现它?。
答案 0 :(得分:0)
当你这样做dismissViewControllerAnimated
UIViewController
(在这种情况下是自我)已经消失,因为他不再在屏幕上,如果它已被释放,那就是另一个故事。您无法显示View2
(名称非常差,至少 ViewController2
)的原因是因为您试图通过{{ 1}}不再出现在屏幕上。
那么,你能做什么?
UIViewController
方法的上下文中的当前self
理论上是由另一个handleNewButton
呈现的,这是您想要呈现UIViewController
的地方。
实施我所说的最快的方法可能是通过here描述的通知。虽然我会用一个块来做,所以当创建View2
时,我会传递一个self
,当dismissiCompletionBlock
被解除时,它会被调用。
答案 1 :(得分:0)
如果您不使用storyboard,请尝试使用nib名称分配NewViewController,
[self dismissViewControllerAnimated:YES
completion:^{
NewViewController *n=[[NewViewController alloc]initWithNibName:@"NewViewController" bundle:nil];
View2.modalPresentationStyle = UIModalPresentationFullScreen;
View2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController: View2 animated:YES completion:nil];
}];
或者如果您正在使用storyboard,请使用标识符获取NewViewController。