使用按钮标记更改Swift表格视图单元格标签文本

3
我创建了一个按钮和两个标签在tableview的单元格上,当点击按钮时会改变tableview标签的文本。这是我的代码:
func buttonLike_ww(sender: AnyObject?) {
        var tag:NSInteger = sender!.tag;

        tag_last_button_clicked = tag;


        // found table
        let cell = TableViewCell_trandingjive(style:UITableViewCellStyle.Default, reuseIdentifier:"Cell")
        cell.label_dislike.text = "20"
        cell.label_like.text = "50"

    }

1
请用正确的英语描述您的问题,好让我能够帮助您。但是我无法理解您的问题。 - dehlen
我创建了一个按钮,并将其标记设置为索引行,设置点击事件“buttonLike_ww”,然后单击按钮通过按钮标记更改tableview标签。@dehlen请帮忙。 - Nishant Chandwani
你的意思是当当前单元格按钮被点击后,你想要改变当前索引的标签吗?@user3899589 - Brian Nezhad
一个问题,你有XIB文件还是使用常规单元格?因为我对两者都有非常好的解决方案。@user3899589 - Brian Nezhad
3个回答

2
func buttonLike_ww(sender: AnyObject?) {
        let tag:NSInteger = sender!.tag;
        let indexPath = NSIndexPath(forRow: tag, inSection: 0)
        let cell = tableView.cellForRowAtIndexPath(indexPath)
        cell.label_dislike.text = "20"
        cell.label_like.text = "50"

}

基本上你要做的是从按钮中获取标记(如果我理解正确,则为UITableViewCell的indexPath)。然后获取单元格的引用,并相应地更改标签文本。
你在方法上犯了错误,因为你没有获取单元格的引用,而是创建了一个新的单元格。此外,上面的代码仅适用于只有一个部分的情况。如果你有多个部分,你不仅需要知道行数,还需要知道节号。
在这种情况下,你可以使用以下方法:
func buttonLike_ww(sender: AnyObject?) {
var position: CGPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
    if let indexPath = self.tableView.indexPathForRowAtPoint(position) {
        let section = indexPath.section
        let row = indexPath.row
        let indexPath = NSIndexPath(forRow: row, inSection: section)
        let cell = tableView.cellForRowAtIndexPath(indexPath)
        cell.label_dislike.text = "20"
        cell.label_like.text = "50"
    }
}

0
如果您有一个带有xib的自定义TableViewCell,那么这段代码可能最适合您。Swift 4
func buttonLike_ww(sender: AnyObject?) {

    let tag:NSInteger = sender.tag
    let indexPath = IndexPath(row: tag, section: 0)

    let cell = TableView.cellForRow(at: indexPath) as! CustomCell

    cell.label_dislike.text = "20"
    cell.label_like.text = "50"


}

0

以下是如何在当前单元格按钮被点击时更改当前单元格标签的方法。

首先,我们需要通过将其提供给方法来识别单元格。像这样,在您的单元格的UIButton方法中确保这一点。

func ButtonTapped(cell: UITableViewCell){
        cell.label_dislike.text = "20"
        cell.label_like.text = "50"
 }

如果您有带有XIB文件的自定义单元格,您可以将 UITableViewCell 更改为 CustomTableViewCell

如果您想从数据数组中获取当前索引,您可以在方法中设置两个变量。

//Get Current Index of you Cell and Match it with your Data Array if
let indexPath = self.tableView.indexPathForRowAtPoint(cell.center)
let selectedCell = dataForCell[(indexPath?.row)!] // Change it to you data array ===> dataForCell[(indexPath?.row)!]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接