我有三个视图控制器,它们使用分段控件使用模态segue在它们之间切换。据我所知,用户在它们之间切换的次数越多,应用程序就会占用更多的内存,因为它不断添加新的视图而不会丢弃以前的视图。
要解决此问题,我尝试在切换方法的末尾添加dismissViewControllerAnimated:YES
。这导致了警告 - "警告:在演示或解雇过程中尝试从视图控制器中解除!"
任何想法如何做到这一点,使其功能类似于标签栏?
- (IBAction)switchTab:(id)sender {
UISegmentedControl *segControll = (UISegmentedControl *)sender;
if (segControll.selectedSegmentIndex==2)
{
[self performSegueWithIdentifier:@"segToSecondView" sender:keyValue];
}
else if (segControll.selectedSegmentIndex==0)
{
[self performSegueWithIdentifier:@"segToThirdView" sender:keyValue];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
答案 0 :(得分:0)
解决方案:不要使用模态演示。创建自己的自定义容器视图控制器,并使用方法
transitionFromViewController:toViewController:duration:options:animations:completion:
在子视图控制器之间切换。
你应该能够使用容器视图控制器和嵌入segue连接你的" root"视图控制器(第一个视图控制器显示为子视图),然后使用上述方法切换到不同的子视图。
您要使容器视图略小于屏幕,以便父视图控制器有空间显示它的分段控件。
答案 1 :(得分:0)
如果要使用分段控件在控制器之间移动,则需要使用与问题中不同的逻辑。如果您选择的索引大于您当前所使用的索引,则需要显示视图控制器,如果您要使用的索引小于当前索引,则应该关闭或使用展开segue。如果你需要返回多个控制器,那么使用展开segue可能是最好的方法。