我正在尝试使用委托将数据从一个类发送到另一个类。
我在这个类中设置了委托:
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一起使用来完成任务。
答案 0 :(得分:0)
这里出了点问题:
func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
tagToIndex[actionButton.tag] = index
delegate?.finishPassing(dictionary: tagToIndex)
}
您正在更新tagToIndex[actionButton.tag] = index,
,但它没有存回。
希望这会有所帮助!