我试图使用委托从一个类发送数据到另一个类。在不带故事板的类之间传递数据
我设置委托在这个类:
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一起完成任务。
我想你可以通过在委托之前添加一个断点来检查吗?.finishPassing(dictionary:tagToIndex)来查看AnswerViewController是否被正确指定为委托,而您正在执行请检查tagToIndex在此处包含的内容。请尝试并告诉结果 – 3stud1ant3
MyCell应该在UITableView中吗?你应该在'cellForRowAt:' – Paulw11
@ Paulw11中设置委托单元在哪里分配单元格我试过了,它实际上工作得很好。问题是,在'cellForRowAt'中设置委托之后,我能够使用存根访问'tagToIndex'的唯一地方就在'TableViewController'类中。考虑到我在'answerViewController'中需要'tagToIndex',这并没有太大的帮助。我可能会错过一些基本的东西,我对此很新颖。 –