簡體   English   中英

UITableView編輯模式不顯示刪除按鈕

[英]UITableView edit mode not showing delete button

我正在從Apple復制樣本Food Tracker應用程序,並且遇到一個問題,即在“編輯”模式下我的TableView中的項目不顯示左手刪除圖標(紅色的圓形)。 如果我向左滑動,則會在右側顯示一個刪除按鈕。 我已經下載了Food Tracker代碼,它可以正常工作。

我可以看到的區別是示例應用程序已實現了UITableViewController,而我在標准UIViewController中具有UITableView。 我不確定為什么這行不通。

有一些類似的問題,但是它們是Swift / Ios的舊版本,因此我不確定它們是否仍然有用。

這是到示例應用程序的鏈接https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/index.html#//apple_ref/doc/uid/TP40015214-CH2-SW1

這是我最近添加的可使其正常工作的功能

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {

    return true
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

    if editingStyle == .delete {
    //delete the row from the dataSource
        dataSource.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)

    }
    else if editingStyle == .insert {
    //create a new instance and insert the row

    }

}

並將其添加到ViewDidLoad()以在導航欄中獲得“編輯”按鈕

 navigationItem.leftBarButtonItem = editButtonItem

這是Food Tracker示例的外觀;

在此處輸入圖片說明

我的缺少左手按鈕。 我可以看到的唯一區別是,我在ViewController中使用了TableView。

謝謝

缺口

我想我解決了這個問題。 實際上,UITableViewController正在做的工作有很多“魔術”。 要在具有TableView的普通UIViewController中重新創建此控件,必須重寫SetEditing函數,並基於按鈕的標題將其置於編輯模式。

override func setEditing(_ editing: Bool, animated: Bool) {


    let status = navigationItem.leftBarButtonItem?.title



    if status == "Edit" {

        tableView.isEditing = true

        navigationItem.leftBarButtonItem?.title = "Done"

        }

    else {

        tableView.isEditing = false

        navigationItem.leftBarButtonItem?.title = "Edit"

    }

}

無需檢查barButtonItem的標題,因為點擊它已經切換了它的狀態並在編輯參數時傳遞了正確的狀態。

同樣,在覆蓋時,您需要調用super的實現,因為不存在將始終顯示delete指示符。

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: true)
    tableView.setEditing(editing, animated: true)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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