我用两种方式写了相同的行为。第一个,不起作用:
var barbutton = (left) ? navigationItem.leftBarButtonItem : navigationItem.rightBarButtonItem
barbutton = UIBarButtonItem(customView: button)
与...相反:
if (left) {
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)
} else {
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
}
有什么区别?
答案 0 :(得分:3)
正如@Martin指出的那样,这两个代码序列的功能非常不同。
首先将barbutton
设置为leftBarButtonItem
或rightBarButtonItem
的内容,然后丢弃该值并将(临时变量)设置为新创建的按钮。
第二个设置为leftBarButtonItem
或rightBarButtonItem
,具体取决于left
到新创建的按钮。
没有太多方法可以缩短代码并仍能达到预期的效果(不会遮挡代码)。
您可以使用:
(left ? navigationItem.setLeftBarButtonItem : navigationItem.setRightBarButtonItem)(UIBarButtonItem(customView: button), animated: false)
但这很奇怪。