【问题标题】:Identify which ViewController got popped确定哪个 ViewController 被弹出
【发布时间】: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


【解决方案1】:

唯一的方法是您可以继承 UINavigationController 并覆盖 - popViewControllerAnimated。我还没有尝试过,但可能是一个解决方案。

也许不是最好的解决方案,而是临时解决方案: 如果UITableView 中的单元格非常少,则可以在弹出视图控制器时将ViewController 名称保存在UserDefaults 中,并在mainViewController 的viewDidAppear 中验证名称

override func viewDidAppear(_ animated: Bool) {
   if (UserDefaultsValue == "FirsViewController"){
     print("last is FirsViewController")
   } else if(UserDefaultsValue == "SecondViewController") {
     print("last is SecondViewController")
   }
}

【讨论】:

    【解决方案2】:

    为所有控制器创建一个类似这样的协议

    protocol WhichPoppedDelegate: class {
    func controllerDidPopped(controller: UIViewController)
    }
    

    在 mainContorller 中为每个分配代表,并在调用之前调用该协议

    navigationController?.popViewController(animated: true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 2014-10-13
      • 2023-04-11
      • 2013-04-07
      相关资源
      最近更新 更多