我正在抓取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'对象是**不是**和你调用委托方法的那个一样吗? –