如何使用按钮标签快速访问自定义单元格的内容?

史蒂夫·罗

我有一个在自定义单元格中具有自定义按钮的应用程序。如果选择该单元格,它将显示到详细信息视图,这是完美的。如果我选择一个单元格中的按钮,则下面的代码将单元格索引打印到控制台中。

我需要访问所选单元格的内容(使用按钮)并将其添加到数组或字典中。我对此很陌生,因此很难找到如何访问单元格的内容。我尝试使用didselectrowatindexpath,但是我不知道如何将索引强制为标签的索引。

因此,基本上,如果每个单元格中有3个单元格带有“ Dog”,“ Cat”,“ Bird”作为cell.repeatLabel.text,并且我选择了第1行和第3行(索引0和2)中的按钮,在数组/字典中添加“狗”和“鸟”。

    // MARK: - Table View

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

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

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell

    // Configure the cell...
    var currentRepeat = postsCollection[indexPath.row]
    cell.repeatLabel?.text = currentRepeat.product
    cell.repeatCount?.text = "Repeat: " + String(currentRepeat.currentrepeat) + " of " + String(currentRepeat.totalrepeat)

    cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton

    cell.checkButton.tag = indexPath.row;

    cell.checkButton.addTarget(self, action: Selector("selectItem:"), forControlEvents: UIControlEvents.TouchUpInside)


    return cell

}

func selectItem(sender:UIButton){

    println("Selected item in row \(sender.tag)")

 }
瓦西尔·加洛夫(Vasil Garov)

选项1.委托一起处理

处理从单元的子视图触发的事件的正确方法是使用委托

因此,您可以按照以下步骤操作:

1.在类定义上方,使用自定义单元格中的单个实例方法编写一个协议:

protocol CustomCellDelegate {
    func cellButtonTapped(cell: CustomCell)
} 

2.在类定义中声明一个委托变量,并在委托上调用protocol方法:

var delegate: CustomCellDelegate?

@IBAction func buttonTapped(sender: AnyObject) {
    delegate?.cellButtonTapped(self)
}

3.遵循表视图所在的类中的CustomCellDelegate:

 class ViewController: CustomCellDelegate

4.设置您的单元格的代表

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomCell
    cell.delegate = self

    return cell
}

5.在视图控制器类中实现所需的方法。

编辑:首先定义一个空数组,然后像这样修改它:

private var selectedItems = [String]()

func cellButtonTapped(cell: CustomCell) {
    let indexPath = self.tableView.indexPathForRowAtPoint(cell.center)!
    let selectedItem = items[indexPath.row]

    if let selectedItemIndex = find(selectedItems, selectedItem) {
        selectedItems.removeAtIndex(selectedItemIndex)
    } else {
        selectedItems.append(selectedItem)
    }
}

其中items是在我的视图控制器中定义的数组:

private let items = ["Dog", "Cat", "Elephant", "Fox", "Ant", "Dolphin", "Donkey", "Horse", "Frog", "Cow", "Goose", "Turtle", "Sheep"] 

选项2.使用闭包处理

我决定回来,向您展示另一种处理这类情况的方法。在这种情况下使用闭包将减少代码量,您将实现目标。

1.在单元格类中声明一个闭包变量:

var tapped: ((CustomCell) -> Void)?

2.调用按钮处理程序中的闭包。

@IBAction func buttonTapped(sender: AnyObject) {
    tapped?(self)
}

3.tableView(_:cellForRowAtIndexPath:)包含视图控制器的类中:

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomCell       
cell.tapped = { [unowned self] (selectedCell) -> Void in
    let path = tableView.indexPathForRowAtPoint(selectedCell.center)!
    let selectedItem = self.items[path.row]

    println("the selected item is \(selectedItem)")
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问自定义单元格中的标签值

来自分类Dev

自定义单元格标签

来自分类Dev

如何快速保持自定义单元格中记录/记录停止按钮的行为一致?

来自分类Dev

Swift-如何在单击按钮时在自定义表格视图单元格中获取标签值

来自分类Dev

快速创建自定义tableview单元格

来自分类Dev

带有自定义单元格的TableViewController快速

来自分类Dev

如何使用Swift在UICollectionView单元格中加载自定义单元格(xib)

来自分类Dev

如何使NSTableView使用混合自定义单元格视图的自定义单元格视图?

来自分类Dev

在“自定义”单元格中的按钮中设置标签的例外

来自分类Dev

在自定义表格视图单元格中本地化按钮和标签[swift]

来自分类Dev

为每个单元格添加带有标签和按钮的自定义 DataGridViewColumn

来自分类Dev

重复自定义单元格使用核心数据快速标记

来自分类Dev

dojo dgrid自定义渲染单元格内容

来自分类Dev

在自定义If函数中使用相对于活动单元格的单元格内容作为条件的问题

来自分类Dev

在自定义If函数中使用相对于活动单元格的单元格内容作为条件的问题

来自分类Dev

如何禁用UITableview单元格的UserInteraction,但不能在单元格的自定义按钮中禁用

来自分类Dev

删除按钮被自定义单元格覆盖

来自分类Dev

自定义单元格和按钮

来自分类Dev

如何在目标c中使用标签和文本字段创建自定义单元格

来自分类Dev

访问heightForRowAtIndexPath中的自定义单元格属性

来自分类Dev

如何在Swift中使用搜索栏过滤具有自定义单元格的UITableView的内容?

来自分类Dev

Swift-如何从UIActionSheet更新自定义单元格标签

来自分类Dev

如何在iOS中管理自定义单元格标签值?

来自分类Dev

如何在表格视图单元格中隐藏自定义类标签?

来自分类Dev

使用自定义单元格连接和使用表格内的按钮

来自分类Dev

自定义单元格,使用UITableViewAutomaticDimension显示多行标签

来自分类Dev

在Swift中使用prepareForSegue方法传递自定义单元格内容的问题

来自分类Dev

如何在handsontable中的单元格内添加自定义按钮?

来自分类Dev

如何更改按钮单击时自定义单元格的高度?

Related 相关文章

  1. 1

    访问自定义单元格中的标签值

  2. 2

    自定义单元格标签

  3. 3

    如何快速保持自定义单元格中记录/记录停止按钮的行为一致?

  4. 4

    Swift-如何在单击按钮时在自定义表格视图单元格中获取标签值

  5. 5

    快速创建自定义tableview单元格

  6. 6

    带有自定义单元格的TableViewController快速

  7. 7

    如何使用Swift在UICollectionView单元格中加载自定义单元格(xib)

  8. 8

    如何使NSTableView使用混合自定义单元格视图的自定义单元格视图?

  9. 9

    在“自定义”单元格中的按钮中设置标签的例外

  10. 10

    在自定义表格视图单元格中本地化按钮和标签[swift]

  11. 11

    为每个单元格添加带有标签和按钮的自定义 DataGridViewColumn

  12. 12

    重复自定义单元格使用核心数据快速标记

  13. 13

    dojo dgrid自定义渲染单元格内容

  14. 14

    在自定义If函数中使用相对于活动单元格的单元格内容作为条件的问题

  15. 15

    在自定义If函数中使用相对于活动单元格的单元格内容作为条件的问题

  16. 16

    如何禁用UITableview单元格的UserInteraction,但不能在单元格的自定义按钮中禁用

  17. 17

    删除按钮被自定义单元格覆盖

  18. 18

    自定义单元格和按钮

  19. 19

    如何在目标c中使用标签和文本字段创建自定义单元格

  20. 20

    访问heightForRowAtIndexPath中的自定义单元格属性

  21. 21

    如何在Swift中使用搜索栏过滤具有自定义单元格的UITableView的内容?

  22. 22

    Swift-如何从UIActionSheet更新自定义单元格标签

  23. 23

    如何在iOS中管理自定义单元格标签值?

  24. 24

    如何在表格视图单元格中隐藏自定义类标签?

  25. 25

    使用自定义单元格连接和使用表格内的按钮

  26. 26

    自定义单元格,使用UITableViewAutomaticDimension显示多行标签

  27. 27

    在Swift中使用prepareForSegue方法传递自定义单元格内容的问题

  28. 28

    如何在handsontable中的单元格内添加自定义按钮?

  29. 29

    如何更改按钮单击时自定义单元格的高度?

热门标签

归档