在没有故事板的情况下在类之间传递数据(委派)

时间:2017-07-30 01:49:36

标签: ios delegates

我正在尝试使用委托将数据从一个类发送到另一个类。

我在这个类中设置了委托:

class AnswerViewController: UIViewController, tagToIndexDelegate{    
override func viewDidLoad() {
    super.viewDidLoad()
    getDictionary()
}

func getDictionary() {
    let myCell = MyCell()
    myCell.delegate = self
    print(123)
}

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

通过此类中的委托获取数据:

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

class MyCell: UITableViewCell, YSSegmentedControlDelegate{

var delegate: tagToIndexDelegate?

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

    tagToIndex[actionButton.tag] = index
    delegate?.finishPassing(dictionary: tagToIndex)

}    
}

我无法在dictionary课程中获得AnswerViewController值。 AnswerViewController肯定有效,因为每当我按下按钮以切换到此视图控制器时,就会执行print语句(在按下按钮之前不会创建AnswerViewController的实例)。

值得注意的是,我没有在这个项目中使用故事板,否则我可以将委托与故事板segue一起使用来完成任务。

1 个答案:

答案 0 :(得分:0)

这里出了点问题:

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

    tagToIndex[actionButton.tag] = index
    delegate?.finishPassing(dictionary: tagToIndex)

} 

您正在更新tagToIndex[actionButton.tag] = index,,但它没有存回。
希望这会有所帮助!