我正在实施一种级联菜单。
在我的故事板中,我有一个UINavigationController
作为根视图控制器UIViewController
(假设它是MyViewController
)。 MyViewController
有一个故事板ID:“菜单”
由于此控制器是一个菜单,它显示一个tableView。单击一个单元格时,它会触发一些代码,尤其是:
UINavigationController *menuNavigator = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
MyViewController *newMenu = (MyViewController*)menuNavigator.topViewController;
//Some configurations of newMenu
[self.navigationController pushViewController:newMenu animated:YES];
因为这里一切正常。
在子菜单中,最后一个单元格是“后退”单元格。当用户触摸它时,它会触发代码:
[self.navigationController popViewControllerAnimated:YES];
我在上一个菜单上正确返回,但没有动画。
我也试过了:
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
[self.navigationController popToRootViewControllerAnimated:YES];
但我仍然没有动画。
在故事板上,我的导航控制器设置为不显示导航栏。如果我显示它,并触摸自动显示的“后退”按钮,则结果相同:没有动画。
我的代码出了什么问题?
修改
我正在使用Autolayout和ARC;
答案 0 :(得分:0)
编辑:你有一些有趣的事情发生了。这行代码看起来不对:
UINavigationController *menuNavigator = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
看起来您试图通过实例化视图控制器来获取导航控制器。我不明白为什么你需要这样的导航器。您只需使用self.navigationController
获取导航控制器。
我做了类似的事情,我的代码如下所示。
在didSelectRowAtIndexPath:
方法中,我没有通过storyboard对象进行实例化,而是:
DVSecondTableViewController *vc = [[DVSecondTableViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
要返回,我只使用导航控制器提供的“后退”按钮,因此我无法帮助您。