为什么 UIBarbuttonItem 在 Swift 中不起作用,而代码编写得很好?

Why UIBarbuttonItem is not working in Swift while code is written well?

我用两种方式编写了相同的行为。第一个,不起作用:

var barbutton = (left) ? navigationItem.leftBarButtonItem : navigationItem.rightBarButtonItem
barbutton = UIBarButtonItem(customView: button)

相反:

if (left) {
     navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)
} else {
     navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
}

有什么区别?

正如@Martin 所指出的,这两个代码序列在功能上有很大不同。

首先将 barbutton 设置为 leftBarButtonItemrightBarButtonItem 的内容,然后丢弃该值并将(临时变量)设置为新创建的按钮。

第二个设置 leftBarButtonItemrightBarButtonItem,具体取决于 left 新创建的按钮。

确实没有太多方法可以缩短您的代码并仍然达到预期的效果(同时不会混淆代码)。

您可以使用:

(left ? navigationItem.setLeftBarButtonItem : navigationItem.setRightBarButtonItem)(UIBarButtonItem(customView: button), animated: false)

但这很奇怪。