0

我有一个导航控制器,它以模态方式呈现,堆栈中有 4 个视图。最终视图有一个完成按钮,用于关闭模态视图。然后当我再次呈现模态视图时,它会自动转到最后一个视图而不是第一个视图。我在关闭后添加了一条线以弹出到第一个视图,但无论我将其设置为是还是否,它都会添加一个奇怪的动画。也许我做错了?

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

更新:

这是用于呈现模态视图/导航控制器的方法

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

3 回答 3

0

不,看起来是对的。如果您想保留导航控制器的状态,则不要以模态方式显示它,因为当您关闭视图时它将被释放。

模态视图通常用于呈现只需要简要显示而不维护视图状态的信息(即关于页面、登录页面、设置页面等)。

于 2011-09-12T01:06:27.097 回答
0

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

于 2011-09-12T03:43:26.737 回答
0

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

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

此外,viewDidLoad每次加载视图时只调用一次viewWillAppear

于 2011-09-12T03:48:48.267 回答