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

Posted

技术标签:

【中文标题】如何防止用户从滑出设置菜单中连续两次调用同一个视图控制器?【英文标题】:how to prevent user from being able to call the same view controller twice in a row from a slide out settings menu? 【发布时间】:2019-03-01 22:29:36 【问题描述】:

我具有以下功能,可识别嵌入在标签栏控制器中的导航控制器并推送配置文件视图控制器。此功能有效,但我想做一些检查,以防止它再次显示配置文件视图控制器,如果从滑出菜单调用此功能,而配置文件视图控制器是最近推送的视图控制器。函数如下:

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】:

你需要检查类型

if nav.viewControllers.last is ProfileVC 
   print("Do nothing") 

else  
  nav.pushViewController(profileVC, animated: true) 

目前你比较了相同类型的 2 个实例,并且确定它们不相等

【讨论】:

当我尝试它给我一个关于 profileVC 的错误说'使用未声明的类型'profileVC'' 宾果游戏!解决了。谢谢!!

以上是关于如何防止用户从滑出设置菜单中连续两次调用同一个视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

Vue js如何防止按钮连续点击两次[重复]

如何根据滑出菜单导航到不同的视图控制器

在导航控制器中实现滑出菜单时在哪里以及如何设置协议委托?

触摸按钮时无法在滑出菜单中推动视图控制器

当我从另一个视图控制器调用时,为啥我的表视图为零?

没有后退按钮的滑出菜单