2017-04-12 37 views
1

我一直在四处搜索大量的stackoverflow并阅读了许多与代表团有关的不同问题,但是我还没有能够解决我的问题。我试图让我的stepperAction(它在tableview单元格内)在每次点击它时改变我的BuyStats类中的标签。但是到目前为止,单击步进器没有任何作用。我想我需要在BuyStats.viewDidLoad()中设置委托,但我没有得到它。这对某人来说可能很容易。谢谢你的帮助。Swift代表团 - 在Tableview Cell中使用步进器更新独立类中的标签

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 

} 

}

+0

你在哪里创建了你的'BuyStatsCell'对象?你需要在'BuyStats'类的某个地方设置'obj.setRemaining = self'。否则,没有定义“BuyStatsCell”的'delegate'是谁,并且您通过委派传递的消息不会生效。要了解更多关于这些协议和代表如何工作,你可以看看[这个答案](http://stackoverflow.com/a/41689281/3687801) – nayem

回答

0

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

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

希望有所帮助。

+0

谢谢,这工作!我发现我必须通过两次引用才能将它传递给我的tableview代码。 –