为什么我的代表总是收到一个零单元格

时间:2015-04-06 21:14:47

标签: ios swift

当我发布this question时,我以为我已经解决了我的问题。但是我现在遇到一个新问题,它总是将一个nil单元格传递给UISwitch上的ValueChanged方法。正如我在上一个问题的答案中所建议的,我为我的UITableViewController实现了一个协议来实现,该协议存在于我的自定义单元格视图中:

// Protocol
protocol SwitchValueChangedDelegate {
    func switchChanged(cell: PreferenceCell) -> Void
}

// Custom cell class
class PreferenceCell : UITableViewCell {
    var delegate : SwitchValueChangedDelegate?

    // Class body here...
}

我相信这是有效的,然后我的UITableViewController实现了这个协议:

class PreferencesTableViewController: UITableViewController, 
                                      SwitchValueChangedDelegate 
{
      // Class body here
}

为了符合协议,我实现了所需的方法:

func switchChanged(cell: PreferenceCell) -> Void {
    if let indexPath = tableView.indexPathForCell(cell) {
         // rest of action code here
    }
}

这里的想法是,一旦UISwithc被切换,实现的委托方法应该更新单元格,但是总是传递一个零单元格。我在cellForRowAtIndexPath中设置委托,然后绑定开关以调用委托方法:

// Cell for row at index path, building the cell...
prefCell.delegate = self

// Create listener for each switch
prefCell.subscribed?.addTarget(self, 
                               action: "switchChanged:", 
                               forControlEvents: UIControlEvents.ValueChanged)

return prefCell

为每个单元格调用此块,为清楚起见,我删除了cellForRowAtIndexPath的方法签名。

为什么一个零细胞总是被传递?我在这里误解了委托模式吗?

0 个答案:

没有答案