为什么UIBarbuttonItem在代码写得好的情况下不能在Swift中工作?

时间:2015-01-13 14:30:20

标签: xcode swift uibarbuttonitem

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

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

与...相反:

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

有什么区别?

1 个答案:

答案 0 :(得分:3)

正如@Martin指出的那样,这两个代码序列的功能非常不同。

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

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

没有太多方法可以缩短代码并仍能达到预期的效果(不会遮挡代码)。

您可以使用:

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

但这很奇怪。