2017-04-12 36 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代碼。 –