如何防止用户能够从滑出设置菜单连续两次调用同一视图控制器?

时间:2019-03-01 22:29:36

标签: ios swift uiviewcontroller uinavigationcontroller

我具有以下功能,用于识别嵌入在标签栏控制器中并推动配置文件视图控制器的导航控制器。此功能有效,但是我要进行一些检查,以防止如果从配置文件视图控制器是最近推送的视图控制器中从滑出菜单调用此功能时,第二次不显示该视图控制器。功能如下:

private func toProfile() {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate,
        let tbc = appDelegate.window?.rootViewController as? TabBarController,
        let nav =  tbc.viewControllers?[tbc.selectedIndex] as? UINavigationController else { return }
    let profileVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "profileVC")
    nav.pushViewController(profileVC, animated: true)
    delegate?.dismissSettingsVC()
}

我尝试过:

if nav.viewControllers.last == profileVC {
    print("Do nothing")
} else {
    nav.pushViewController(profileVC, animated: true)
}

但它从未说过两者是平等的。如何制作一条if语句来检查最后推送的视图控制器是否为profileVC?

1 个答案:

答案 0 :(得分:1)

您需要检查类型

if nav.viewControllers.last is ProfileVC {
   print("Do nothing") 
}
else { 
  nav.pushViewController(profileVC, animated: true) 
}

当前,您比较2个相同类型的实例,并确保它们不相等