重新呈现模态视图带来最后VC而不是第一个

时间:2011-09-12 00:19:23

标签: iphone objective-c cocoa-touch uiview presentmodalviewcontroller

我有一个导航控制器,模块化地呈现堆栈中的4个视图。最终视图有一个完成按钮,可以解除模态视图。然后当我再次呈现模态视图时,它会自动转到最后一个视图而不是第一个视图。我在删除后添加了一行弹出到第一个视图,但它添加了一个奇怪的动画,无论我将其设置为YES还是NO。也许我做错了?

- (void)dismissModalView
{
    [self dismissModalViewControllerAnimated:YES];
    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:([self.navigationController.viewControllers count] -4)] animated:YES];
}

更新

这是用于呈现模态视图/ navcontroller

的方法
- (void)showModalView
{
    self.optionsNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self.navigationController presentModalViewController:self.optionsNavController animated:YES];
}

3 个答案:

答案 0 :(得分:0)

不,它看起来不错。如果要保留导航控制器的状态,则不要以模态方式显示它,因为当您关闭视图时它将被取消分配。

模态视图通常用于显示仅需要在不保持视图状态的情况下短暂显示的信息(即关于页面,登录页面,设置页面等)。

答案 1 :(得分:0)

打扰一下,如果我过度简化您的问题,但如果您需要直接回到第一个视图控制器,也许您可​​以尝试popToRootViewControllerAnimated:方法而不是popToViewController:

答案 2 :(得分:0)

我不确定您发布的解雇代码的问题是什么,但以下情况应该有效:

- (void)showModalView
{
    self.optionsNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self.optionsNavController popToRootViewControllerAnimated:NO];
    [self.navigationController presentModalViewController:self.optionsNavController animated:YES];
}

此外,viewDidLoad仅在每次加载视图时调用一次,viewWillAppear a