【发布时间】:2014-10-15 11:04:51
【问题描述】:
使用 Xcode 6 beta 5 协议和委托不能像第一个那样工作。 printCar() 在调用 self.delegate?.printCar() 时不会被调用。我现在如何使用协议和委托?
import UIKit
protocol communication{
func printCar()
}
class car{
var delegate:communication?
init(){}
func passCar(){
self.delegate?.printCar()
}
}
class ViewController: UIViewController,communication {
override func viewDidLoad() {
super.viewDidLoad()
println("start")
var bmw = car()
bmw.passCar()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func printCar(){
println("car")
}
}
【问题讨论】:
-
当调用
init()时,self.delegate是nil。 - (事实上,您没有将委托设置为视图控制器类。) -
我写了一个不好的例子,我尝试重写它
-
我的最后一句话仍然适用(也在下面的答案中):您没有分配代表(例如
bmw.delegate = self)。 -
现在可以使用了。谢谢。
标签: ios swift xcode6-beta5