使用自定义标题按钮修改tableview中的部分?

时间:2016-10-02 16:02:32

标签: ios swift uitableview

我试图删除或添加一个部分到表格视图。 我在笔尖中创建了一个自定义标题视图,并为其添加了一个标签和2个按钮。 问题是,我无法在删除或添加部分时连接点。 到目前为止,这是我的代码:

//Setup Header
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: headerID) as! CustomHeader
    //Configure header...
    header.addBtn.addTarget(self, action:Selector(("add")), for: .touchUpInside)
    header.addBtn.tag = section

    switch section {
    case 0:
        header.sectionLBL.text = "Detail 1"
    case 1:
        header.sectionLBL.text = "Detail 2"
    default:
        break
    }
    return header
}

@IBAction func addButton(sender: UIButton) {
    //Add section code here...
}

@IBAction func delete(sender:UIButton){
    //delete section code here...
}

我还试图找出如何使用提交方式来处理按钮:

    //Setup Editing Style for table view
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)


    }

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
//Editing styles for deletion or insertion...
}

1 个答案:

答案 0 :(得分:1)

您可以将故事板场景或NIB仅连接到其所属类。

1)向CustomHeader类添加协议,并确保将类分配给NIB:

protocol CustomHeaderButtonPressDelegate {
    func didPressAdd()
    func didPressDelete()
}

class CustomHeader: UIView {
    var delegate:CustomHeaderButtonPressDelegate?
    @IBAction func addButton(sender: UIButton) {
        delegate?.didPressAdd()
    }

    @IBAction func delete(sender:UIButton){
        delegate?.didPressDelete()
    }
}

2)将NIB分配给IBs Inspector中的新班级

enter image description here

改变"班级"从UIViewCustomHeader

3)将按钮目标连接到CustomHeader s IBAction s

4)以编程方式设置代理

class YourClass: UITableViewController, CustomHeaderButtonPressDelegate {
...
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: headerID) as! CustomHeader
    header.delegate = self
...
}
...
func didPressAdd() {
    //handlePress
}
func didPressDelete() {
//handlePress
}