如何解决快速关闭视图然后呈现新视图的问题
我有 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 举报,一经查实,本站将立刻删除。