如何防止用户从滑出设置菜单中连续调用同一个视图控制器两次?
how to prevent user from being able to call the same view controller twice in a row from a slide out settings menu?
我有以下功能,可以识别嵌入在选项卡栏控制器中的导航控制器并推送配置文件视图控制器。此功能有效,但我想做一些检查,如果从滑出菜单调用此功能,而配置文件视图控制器是最近推送的视图控制器,则防止它第二次显示配置文件视图控制器。这是函数:
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?
你需要检查类型
if nav.viewControllers.last is ProfileVC {
print("Do nothing")
}
else {
nav.pushViewController(profileVC, animated: true)
}
目前您比较了 2 个相同类型的实例,并确定它们不相等
我有以下功能,可以识别嵌入在选项卡栏控制器中的导航控制器并推送配置文件视图控制器。此功能有效,但我想做一些检查,如果从滑出菜单调用此功能,而配置文件视图控制器是最近推送的视图控制器,则防止它第二次显示配置文件视图控制器。这是函数:
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?
你需要检查类型
if nav.viewControllers.last is ProfileVC {
print("Do nothing")
}
else {
nav.pushViewController(profileVC, animated: true)
}
目前您比较了 2 个相同类型的实例,并确定它们不相等