我有一个普通的 UIViewCONtroller(home),其中我有 IBAction 方法,例如
- (IBAction)goto1:(id)sender
{
self. goto1Controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:self. goto1Controller animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
它工作正常。goto1Controller 是一个普通的 UIViewcontroller,其中我通过用户定义的导航控制器使用了一个动作,通过它我转到另一个控制器,如 self.goto1Controller
- (IBAction)goto2:(id)sender
{
[userdefNavController pushViewController:goto2Controller animated:YES];
[self presentModalViewController: userdefNavController animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
我从 goto2Controller 回到 goto1Controller 通过
[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
它工作正常...但是当我使用相同的方法([self deniedModalViewControllerAnimated:YES];)回家时,我必须按两次...而且当我再次按 - (IBAction)goto2:(id)sender从 goto2Controller 崩溃后发生..错误也是“不支持多次推送相同的视图控制器实例”有什么解决方案吗?我在我的 viewdidload 中有
userdefNavController = [[UINavigationController alloc] initWithRootViewController:self];
Run Code Online (Sandbox Code Playgroud)
您不必在导航控制器上混合使用 presentModalViewController 和 pushViewController。使用它们的原因各不相同。这是视图控制器编程指南所说的:
最常见的是,应用程序使用模态视图控制器作为临时中断,以便从用户那里获取关键信息。但是,您也可以使用模态呈现的视图控制器在特定时间为您的应用程序实现替代接口。
我有分层数据,通过使用 -pushNavigationController:aniamted: 显示连续的视图控制器来创建一个钻取。当错误消息说您不能推送同一个实例时,并不意味着您不能创建同一个类的新实例。只需创建要推送的视图控制器的新实例。
如果您有特殊情况需要向用户展示一些不寻常的东西,请使用 -presetnModalViewController:
| 归档时间: |
|
| 查看次数: |
3758 次 |
| 最近记录: |