如何防止用户从滑出设置菜单中连续两次调用同一个视图控制器?
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'' 宾果游戏!解决了。谢谢!!以上是关于如何防止用户从滑出设置菜单中连续两次调用同一个视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章