我學習迅速協議和委託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只是想將一個數據從一個標籤傳輸到另一個標籤。 –