簡體   English   中英

禁用后退按鈕導航操作

[英]Disable back button navigation action

我有一個home screendetail 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM