iOS UITableView:清除部分按钮

时间:2015-10-15 05:34:01

标签: ios uitableview uibutton

我需要在表视图部分标题中添加清除按钮。它与通知中心的完全相同。因此,当用户点击它时,“x”将变为“清除”。如果他/她再次点击它,应用程序将执行操作。但是,此按钮外的任何点击,“清除”将返回“x”

我该怎么做?提前致谢

enter image description here

1 个答案:

答案 0 :(得分:1)

不幸的是,这不是开箱即用的。您必须创建自己的自定义节标题视图。该自定义标题视图在左侧包含UILabel。在右侧,您放置一个标题为“X”的UIButton。当用户点击按钮时,将其标题更改为“清除”,将其状态更改为.Selected。只需在点击按钮时清除表格视图部分,其状态为.Selected

func setupButton() {
    let button = UIButton()
    button.setTitle("X", forState: .Normal)
    button.addTarget(self, action: Selector("didPressButton:"), forControlEvents: .TouchUpInside)
    addSubview(button)
}

func didPressButton(button: UIButton) {
    if button.selected {
        // clear your table view section
    }
    button.setTitle("Clear", forState: .Normal)
    button.selected = true
}

要将按钮置于未选择的状态,请在您的部分标题视图中添加背景UIView并向其添加UITapGestureRecognizer

func setupBackground() {
    let background = UIView()
    let recognizer = UITapGestureRecognizer(target: self, action: Selector("didTapOutside:"))
    background.addGestureRecognizer(recognizer)
    insertSubview(background, belowSubview: button)
}

func didTapOutside(recognizer: UITapGestureRecognizer) {
    button.selected = false
    button.setTitle("X", forState: .Normal)
} 

要在表格视图中使用自定义栏目标题,请实施以下UITableViewDelegate方法:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
     // create your custom section header and return it   
}