【问题标题】:How to call ViewControllers in regular sequence at AppDelegate.swift如何在 AppDelegate.swift 中按常规顺序调用 ViewController
【发布时间】:2018-02-17 12:56:26
【问题描述】:

现在我正在开发信使

MessengerBox是tableViewController,当用户点击其中一个单元格时,就会出现chatRoomViewcontroller。

如果应用程序未运行且消息已到达,则会显示推送通知。用户点击通知,App直接显示chatRoomViewcontroller。

最初,我使用 window.rootViewController 实现了这段代码

但是问题发生了。当我点击chatRoomviewController的返回按钮时,没有发生变化,因为这个视图控制器是rootview,它的presentingViewController是空的!

所以我像下面这样修复它

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    ///some code for notification..

        let mVC  //this is MessengerBoxViewcontroller
        let crVC  //this is ChatRoomViewController


        CRVC?.sender = "asdf"
        do{
            self.window?.rootViewController = mVC
            self.window?.makeKeyAndVisible()
            defer{
                mVC?.presentChatRoomVC()
            }
        }

     /// some code...
}

有效!但我想知道更好的方法。 而且我认为我应该研究窗口和视图控制器的工作原理。

请推荐我更好的方法,并参考文档。 谢谢。

【问题讨论】:

    标签: ios swift viewcontroller appdelegate


    【解决方案1】:

    您需要在 ChatRoomViewController 中以编程方式处理后退按钮操作以解决您的问题:

    点击后退按钮:

    1. 检查 MessengerBoxViewcontroller 是否存在于 navigationController 堆栈中。

    2. 如果MessengerBoxViewcontroller 在navigationController 堆栈中,则弹出以移回MessengerBoxViewcontroller

    3. 其他人出席MessengerBoxViewcontroller

      if let viewControllers = self.navigationController?.viewControllers {
           for viewController in viewControllers {
      
              if viewController.isKindOfClass(MessengerBoxViewcontroller) {
                  print("Your controller exist")
                  navigationController?.popViewController(animated: true)
      
               }
            }
      }
      else {
           let vc = self.storyboard?.instantiateViewController(withIdentifier: "messengerBoxViewcontroller") as! MessengerBoxViewcontroller
           self.present(vc, animated: true, completion: nil)
      }
      

    【讨论】:

    • 你试过这个解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多