func showFilterPanel() {
println("Showing")
}
let backButton = UIBarButtonItem(title: "Horse", style: UIBarButtonItemStyle.Plain, target: nil, action: "showFilterPanel")
@IBAction func tapGesture(sender: AnyObject) {
self.navigationItem.leftBarButtonItem = self.backButton
}
以上代码嵌入在地图导航控制器中。这个动作没有任何效果,任何想法为什么(我都没有看到"在控制台中显示"?)
答案 0 :(得分:4)
您通过nil
作为选择器的目标。在这种情况下,它应该是self
:
let backButton = UIBarButtonItem(title: "Horse", style: UIBarButtonItemStyle.Plain, target: nil, action: "showFilterPanel")
您还需要重新安排此操作以将UIBarButtonItem的实例化向下移动到方法范围,以便能够在其实例化中引用self
。在Swift中创建属性时,您无法在其创建中引用其他属性或self
,除非它是计算或延迟实例化的属性。