我正在抓取JSON菜單,並且一旦JSON返回,我想運行menuReady()更新SomeTableViewController類中表的內容。但是下面的代碼似乎不起作用。通過Swift中的不同類調用委託方法
AIM:運行menuReady()一旦返回JSON就更新內容。
問題:menuReady()永遠不會被解僱。
SomeTableViewController.swift
class SomeTableViewController: UITableViewController, MenuModelDelegate {
override func viewDidLoad() {
menuModel.delegate = self
}
func menuReady() {
// This is NOT fired.
print("SomeViewController.menuReady()")
}
}
MenuModel.swift
protocol MenuModelDelegate : class {
func menuReady()
}
class MenuModel: NSObject {
var delegate:MenuModelDelegate?
func getMenu(data: JSON) {
// This is fired.
print("MenuModel.getMenu()")
delegate?.menuReady()
}
}
呼叫從AnotherViewController當按鈕竊聽
AnotherViewController.swift
class AnotherViewController : UIViewController {
func buttonTapped(sender: UIButton!) {
// This function is fired.
// jsonData is some json data returned from http request
let menuModel = MenuModel()
menuModel.getMenu(data: jsonData)
}
}
是'menuModel'在'SomeTableViewController'和'menuModel'在 「其他一些類」 完全相同的對象? –
@PhillipMills不,他們是分開的對象。三個不同的對象。 –
所以,你給委託給的'MenuModel'對象是**不是**和你調用委託方法的那個一樣嗎? –