如何/在何处设置代表

时间:2017-06-21 01:02:51

标签: ios swift delegates

我正在通过委托传递函数中存在的变量。在大多数情况下,一切似乎都有效。我唯一无法弄清楚的是如何设置委托,例如它应该是"foo".delegate = self

之类的东西

通常情况下这很简单,但由于我正在使用函数而不是类中的变量,我不知道foo会是什么(请原谅术语,我需要一个占位符)

供您参考

以下是协议:

protocol TagToIndexDelegate {
func finishPassing (dictionary:Dictionary<Int,Int>)
}

以下是我尝试从以下位置发送变量的函数:

extension MyCell: YSSegmentedControlDelegate {

func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
    tagToIndex[actionButton.tag] = index

    delegate?.finishPassing(dictionary: tagToIndex)
}

func segmentedControl(_ segmentedControl: YSSegmentedControl, didPressItemAt index: Int) {

}}

delegate的类型为TagToIndexDelegate,而tagToIndex中存在的变量willPressItemAt是我传递的数据。

最后,我正在尝试实施TagToIndexDelegate

的课程
class AnswerViewController: UIViewController, TagToIndexDelegate {

func finishPassing (dictionary: Dictionary <Int, Int>)
{

}


override func viewDidLoad() {
    super.viewDidLoad()

}
}

我非常擅长使用代表,因此非常感谢任何帮助或批评。

谢谢,

尼克

1 个答案:

答案 0 :(得分:0)

假设AnswerViewController是包含表格视图和问题中引用的单元格的视图控制器,它可能也是表格视图数据源。

您正在创建UITableViewDataSource个实例的MyCell实施可能看起来像这样:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let aCell = tableView.dequeueReusableCell(withIdentifier: "my_cell_reuse_id") as! MyCell
    return aCell
}

您只需将代理设置为self

即可
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let aCell = tableView.dequeueReusableCell(withIdentifier: "my_cell_reuse_id") as! MyCell
    aCell.delegate = self
    return aCell
}

请注意,我假设delegate属于MyCell的属性:

class MyCell: UITableViewCell {
    var delegate: TagToIndexDelegate?
}