Swift:如何更改编辑/完成按钮的行为/功能

时间:2015-09-14 13:09:45

标签: ios swift uitableview uitabbaritem

在我的iOS应用中,我有一个UITableViewController,其行包含数据和数据选择器。我想更改按钮编辑和完成的te功能。我希望编辑按钮允许用户写入/插入数据(而不是删除行),而我希望“完成”按钮保存以保存数据(而不仅仅是退出编辑模式)。我在代码中添加了以下内容:

// The following two functions remove the red minus sign
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
    return UITableViewCellEditingStyle.None
}

override func tableView(tableView: UITableView, shouldIndentWhileEditingRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return false
}

为了避免出现圆圈红色减号,但如何根据按钮的编辑或完成值覆盖功能?我听说过代表,但我是iOS的新手,我不知道他们是什么......如果有人能解释我,我会很感激。

1 个答案:

答案 0 :(得分:2)

请尝试此代码块: - )

import UIKit

// You can initialise an instance of this class manually or configure it on storyboard
class TableViewController: UITableViewController {
    // MARK:- This part is for demo purpose
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
    }

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
        cell.backgroundColor = UIColor.yellowColor()
        cell.textLabel?.text = "\(indexPath.row)"

        return cell
    }

    // MARK:- From here is the main part to answer your question
    override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        return true
    }

    override func tableView(tableView: UITableView, shouldIndentWhileEditingRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        return false
    }

    override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {

        let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Edit") { (action, indexPath) -> Void in
            print("Write/Insert data here")
        }

        let doneAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Done") { (action, indexPath) -> Void in
            print("Save data here")
        }
        doneAction.backgroundColor = UIColor.blueColor()

        return [doneAction, editAction]
    }
}

你会看到这样的结果 enter image description here