iOS Swift, Update UITableView custom cell label outside of tableview CellForRow using tag

前端 未结 3 1433
一整个雨季
一整个雨季 2020-12-28 11:07

Setup (Swift 1.2 / iOS 8.4):

I have UITableView custom cell (identifier = Cell) inside UIViewController. Have two buttons (increment/decrement count) and a label (di

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-28 11:57

    I have never seen anything like this before so I am not sure if this will be the correct way to do. But I got the intended functionality using the bellow code:

    For people who find it difficult to understand: The only problem we have in this is to refer to the TableView Cell. Once you figure out a way to refer the cell, you can interact with the cell components.

    func addBtn(sender: AnyObject) -> Int {
        let button: UIButton = sender as! UIButton
    
        let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0) // This defines what indexPath is which is used later to define a cell
        let cell = tableView.cellForRowAtIndexPath(indexPath) as! FoodTypeTableViewCell! // This is where the magic happens - reference to the cell
    
        count = 1 + count
        println(count)
        cell.countLabel.text = "\(count)" // Once you have the reference to the cell, just use the traditional way of setting up the objects inside the cell.
        return count
    }
    
    func subBtn(sender: AnyObject) -> Int {
        let button: UIButton = sender as! UIButton
    
        let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0)
        let cell = tableView.cellForRowAtIndexPath(indexPath) as! FoodTypeTableViewCell!
    
        if count == 0 {
            println("Count zero")
        } else {
            count = count - 1
        }
    
        cell.countLabel.text = "\(count)"
        println(count)
        return count
    }
    

    I hope someone will benefit from this.

    PLEASE CORRECT ME IF THERE IS SOME PROBLEM IN THIS SOLUTION OR THERE IS A BETTER/PROPER WAY TO DO THIS.

提交回复
热议问题