【发布时间】:2016-09-09 06:05:19
【问题描述】:
我一直在摆弄 UINavigationController 但是这个问题现在对我来说有点棘手,
我有一个带有三个视图控制器的 UINavigationController。
A -> B -> C
当我来到 viewDidLoad() 中的 C 视图控制器时,我现在正在从堆栈中删除 B,如果我再次点击 C,它会转到 A,一切都按预期工作,但 B 永远不会被释放,但 C 会。
删除代码:
if self.navigationController != nil{
for viewController in (self.navigationController?.viewControllers)!{
if viewController.isKindOfClass(MyVCKind.self){
self.navigationController?.viewControllers.removeAtIndex((self.navigationController?.viewControllers.indexOf(viewController))!)
}
}
}
所以我测试并分析了 B 视图控制器,以确保我没有任何泄漏,当我从 B -> A 回到 B 时一切都很好,B 被冲洗掉了,但问题是仅当我从堆栈中手动删除 B 时。
仅供参考,我不想设置自定义后退按钮并覆盖操作,我想要默认行为并且没有泄漏。
感谢任何帮助。
【问题讨论】:
-
为此,我需要覆盖后退按钮,但我不想这样做。
-
当你从
B推送C时,先弹出B不带动画,再推送C。这将删除 B 视图控制器而不会泄漏。 -
@pkc456 它不工作!
-
你可以只使用从 B 到 A 的委托并从那里推送到 C,然后 B 会得到适当的释放,你想过吗?
标签: ios uiviewcontroller uinavigationcontroller