我有一个主屏幕
和详细屏幕
。 从主屏幕
,我使用推送
导航和移动到详细屏幕
。
在我的详细信息屏幕
中,我有一个返回按钮,可以返回到主屏幕
。 因为我确实从主屏幕
推送了。 这个场景运行良好。
但是当用户点击后退按钮时,如果某些条件匹配,我不想将屏幕移回我的主屏幕。 如果得分计数为0。 那我不想让用户回去。 如果它超过1,那么如果用户点击后退按钮,他们可以移动到主屏幕。
所以我做了:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if self.isMovingFromParent {
if count > 0 {
// Dont move , just stay in same screen
} else {
// Move to back home screen
}
}
}
当我尝试这个,我仍然能够回到主屏幕轻点后退按钮。 我怎么能呆在同一屏幕上。
任何帮助都很好。
谢谢
您可以尝试在导航控制器中添加自定义的后退按钮。
func setupCustomBackBtn() {
let navBackBtn = UIButton(type: .system)
navBackBtn.addTarget(self, action: #selector(backBtnAction), for: .touchUpInside)
navBackBtn.setImage(UIImage(named: "customBack"), for: .normal)
navBackBtn.frame = CGRect(x: -20, y: 0, width: 32, height: 32)
let customBackBarBtn = UIBarButtonItem(customView: navBackBtn)
navigationItem.leftBarButtonItem = customBackBarBtn
}
@objc func backBtnAction() {
}
您应该创建后退按钮操作函数,并使用您的代码:
if self.isMovingFromParent {
if count > 0 {
// Dont move , just stay in same screen
} else {
// Move to back home screen
}
}
在那个函数中。
@IBAction func tapOnBackButton() {
if count == 0 {
self.dismiss(animated: true, completion: nil)
}
}
或者诸如此类的。
您需要将标识符添加到pop Segue
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
if let ident = identifier {
if ident == "YourIdentifier" {
if count > 0 {
// Dont move , just stay in same screen
return false
}
else {
// Move to back home screen
return true
}
}
}
return true
}