将分段控制切换到不同视图后关闭视图?

时间:2014-11-03 20:47:12

标签: ios objective-c

我有三个视图控制器,它们使用分段控件使用模态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];

}

2 个答案:

答案 0 :(得分:0)

解决方案:不要使用模态演示。创建自己的自定义容器视图控制器,并使用方法 transitionFromViewController:toViewController:duration:options:animations:completion: 在子视图控制器之间切换。

你应该能够使用容器视图控制器和嵌入segue连接你的" root"视图控制器(第一个视图控制器显示为子视图),然后使用上述方法切换到不同的子视图。

您要使容器视图略小于屏幕,以便父视图控制器有空间显示它的分段控件。

答案 1 :(得分:0)

如果要使用分段控件在控制器之间移动,则需要使用与问题中不同的逻辑。如果您选择的索引大于您当前所使用的索引,则需要显示视图控制器,如果您要使用的索引小于当前索引,则应该关闭或使用展开segue。如果你需要返回多个控制器,那么使用展开segue可能是最好的方法。