2016-10-19 37 views
0

在我的UITableViewController我樹立了一個外部類的數據源。正如下面如何設置一個UITableViewCell的代表從UITableViewDataSource?

class HomeViewDataSource: NSObject, UITableViewDataSource { 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier(myCellIdentifier, forIndexPath: indexPath) 
     cell.delegate = //Should I set this to the view controller? 
     return cell 
    } 
} 

正如你所看到的,我有我想設置一個委託可重複使用的電池。在單元格中,我有一個觸發UITableViewController事件的按鈕。現在,我已經將單元的委託設置爲我的UITableViewController,以便它可以執行網絡調用。但我不相信我是以正確的MVC格式來做這件事。

在的UITableViewController網絡呼叫使用一個屬性從UITableViewDataSource陣列。

什麼是更好的方法來做到這一點?

回答

0

我有另外的考慮這個決定採用封閉嘗試。 這是我能做到的。

//MyCellClass: UITableViewCell 

@IBAction func buttonPressed(sender:UIButton) { 
    buttonNetworkCall?(self) 
} 

,並在UITableViewDataSource

//HomeViewDataSource: NSObject, UITableViewDataSource { 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier(myCellIdentifier, forIndexPath: indexPath) 

    cell.buttonNetworkCall = { (cell) in 
     self.makeButtonNetworkCall(cell) 
    } 

    return cell 
    } 
} 
相關問題