[英]Disable back button navigation action
我有一個home screen
和detail screen
。 從home screen
我使用push
導航和移動到detail screen
。
在我的detail screen
中,我有一個返回按鈕 go 返回home screen
。 因為我確實從home screen
push
。 這個場景運行良好。
但是當用戶點擊后退按鈕時,如果某些條件匹配,我不想將屏幕移回我的主屏幕。 假設我有一個稱為價值得分的按鈕。 如果分數為 0。那么我不希望用戶返回 go。 如果它大於 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
}
}
}
嘗試此操作時,我仍然可以通過單擊后退按鈕將 go 返回主屏幕。 我怎樣才能留在同一個屏幕上?
您可以嘗試在導航 controller 中添加自定義后退按鈕。
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() {
}
您應該創建后退按鈕操作 function 並使用您的代碼:
if self.isMovingFromParent {
if count > 0 {
// Dont move , just stay in same screen
} else {
// Move to back home screen
}
}
在那個 function。
@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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.