微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

快速关闭视图然后呈现新视图的问题

如何解决快速关闭视图然后呈现新视图的问题

我有 TabBarViewController,当我点击他的孩子时,会显示视图,称为 SettingsVC,在 SettingsVC 内部我有 tableview,底部有注销,当我点击注销时,我想关闭 SettingsVC 并显示LoginVC,但我无法实现这一点。我知道我应该使用委托、协议,但我做错了什么。代码如下,谢谢。

以下代码来自 SettingsVC

protocol PresentViewControllerDelegate: class {
    func presentViewController(vc: LogInViewController)
}

class SettingsVC: UIViewController,UITabBarDelegate,UITabBarControllerDelegate {

    public var presentDelegate: PresentViewControllerDelegate?

    func present() {
        presentDelegate?.presentViewController(vc: LogInViewController())
    }

    func logoutUser() {
    networkManager.logout(endpoint: "/v1/auth/logout") { (session) in
        switch session {
        case .success:
            print(session)
            self.dismiss(animated: true,completion: nil)
            self.present()
        case .failure(let error):
            print(error.localizedDescription)
        }
     }
 }

extension SettingsVC: UITableViewDelegate,UITableViewDataSource {
    func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
    
    let settings = SettingsEnums(rawValue: indexPath.row)
    
    switch settings {
    case .passcode:
        print("passcode")
    case .about:
        print("about")
    case .termsAndConditions:
        print("terms and conditions")
    case .privacyPolicy:
        print("privacy policy")
    case .visit:
        print("visit")
    case .logout:
        logoutUser()
        print("logout clicked")
        
    default:
        print("default")
    }
  }
}

然后我在 TabBarVC 中尝试了这个

extension TabBarViewController: PresentViewControllerDelegate {
    func presentViewController(vc: LogInViewController) {
      self.present(self,animated: true,completion: nil)
   }
}

class TabBarViewController: UITabBarController,UINavigationControllerDelegate {

var settingsVC: SettingsVC!

override func viewDidLoad() {
    super.viewDidLoad()  
    settingsVC.presentDelegate = self
  }
}

我确实在注销方面取得了成功,并且设法关闭了 SettingsVC,但无法显示 LogInVC。如果您认为这会造成延迟并且可以看到“交换”,请您提出其他解决方案吗?

我很难理解代表.. 提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。