Swift委派 - 使用Tableview单元格中的步进器来更新单独类中的标签

时间:2017-04-12 02:49:58

标签: swift protocols delegation

我一直在寻找堆栈溢出很多并阅读与委托有关的许多不同问题,但我还没能解决我的问题。我试图让我的stepperAction(在tableview单元格内)每次单击时更改我的BuyStats类中的标签。但到目前为止,单击步进器没有任何效果。我想在BuyStats.viewDidLoad()中需要一些东西以某种方式设置委托但我没有得到它。对某些人来说这可能很容易。谢谢你的帮助。

protocol SetRemainingValue : class {
func setValue(amount: Double)
}
}

//

class BuyStatsCell: UITableViewCell{

weak var setRemaining : SetRemainingValue?

@IBAction func stepperAction(_ sender: UIStepper) {

    setRemaining?.setValue(amount: sender.value)
}

//

class BuyStats: UIViewController, SetRemainingValue {

   @IBOutlet weak var spendAmount: UILabel!

override func viewDidLoad(){

}

 func setValue(amount: Double) {

    spendAmount.text = amount

}

}

1 个答案:

答案 0 :(得分:0)

如果您使用的是动态UITableView,则可以在cellForRowAtIndexPath内尝试以下内容:

  1. 使用dequeueCellWithReuseIdentifier初始化您的单元格时,将其转换为BuyStatsCell(可能带有as! BuyStatsCell)以获取对其类变量的访问权。
  2. 使用cell.setRemaining = self设置委派。使用self假设您的tableView的cellForRowAtIndexPath位于BuyStats viewController类中。如果不是,您可能希望在tableView代码所在的类中获取BuyStats对象的引用,并使用该引用代替self,如cell.setRemaining = /*yourBuyStatsObjectReferenceGoesHere*/
  3. 希望有所帮助。