【发布时间】:2021-03-28 10:13:42
【问题描述】:
我有一个包含 tableView 的 mainViewController,每个单元格都推送一个特定的 customViewController。当它弹出时,我想触发不同的功能。所以我的问题是如何识别弹出后弹出的viewController。
第一个日志读取
lastObject = Optional(<Project.ViewController: 0x61900009c480>) 但总的来说这个想法是行不通的。在网上找不到类似的东西。有任何想法吗?提前致谢
override func viewDidAppear(_ animated: Bool) {
print("lastObject = \(String(describing: (self.navigationController?.viewControllers.last)))")
if ((navigationController?.viewControllers.last?.isKind(of:WebViewController.self)) == true){
print("last is web")
}else{
print("is not web")
}
【问题讨论】:
-
您可以使用自定义 UINavigationController 并覆盖其弹出方法。
-
@Larme 感谢您的推荐。目前我正在做一个“便宜”和快速的方法在每个控制器的每个 viewDidAppear 中存储一个 UserDefault 值,但必须有更好的方法..
-
@snksnk:这也是我推荐的。太好了,你已经做到了!
-
如果我正确理解您的问题,这是一个简单的解决方案,首先在主表 vc 中为单元格索引创建一个 var。这个 var 保持跟踪被推送的单元格的索引。就像您在主 vc 中推送自定义 vc 集索引时一样。现在当你弹出时,在 viewDidAppere 检查索引并根据它们做你的事情。
-
@Harish:是的,我认为这是最简单的捷径。我赞成您的回答,并感谢您抽出宝贵的时间来撰写答案,但我将保留它以供任何其他可能的解决方案使用。
标签: ios swift xcode uinavigationcontroller viewcontroller