我学习迅速协议和委托pattern.But,我真的需要用下面的问题,帮助其返回我空结果斯威夫特代表和协议
在视图控制器1:
protocol GetAllDataProtocol{
func didReadInfo(info : [[String:String]])
}
class ViewController1 : {
var delegate : GetAllDataProtocol?
var info_data : [[String:String]] = []
override func viewDidLoad() {
readData()
}
func readData(){
info_data.append(["ID" :"234FD","ADDRESS":"Maimi","TYPE":"A"])
delegate?.didReadInfo(info_data)
}
}
然后在视图控制器2 :
class SubmissionViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate,GetAllDataProtocol{
var info_data = [[String:String]]()
@IBAction func submitTapped(sender: AnyObject) {
print("After : \(info_data)")
}
func didReadInfo(info: [[String : String]]) {
dispatch_async(dispatch_get_main_queue(),{
self.info_data = info
print("Before : \(self.info_data)")
})
}
}
当运行
After : []
为什么它没有运行“之前?”以及为什么我无法获取数据。
何时/你在哪里设置代表? 'x.delegate = y'? – Wain
对不起,延迟回复,我有点忙于工作。实际上,我使用uitabbarcontroller.i只是想将一个数据从一个标签传输到另一个标签。 –