为 splitViewController displayModeButtonItem (UIBarButtonItem) 使用自定义图像时遇到问题 Swift IOS 9

Trouble using a custom image for splitViewController displayModeButtonItem (UIBarButtonItem) Swift IOS 9

我正在使用 splitViewController 在我的应用程序中启用滑出菜单,在 iOS 上使用 Swift 9.

除了无法为我的 "Menu" 按钮(即 splitViewController 的 displayModeButtonItem)获取自定义图像外,我的一切都按预期工作。

这是我试过的。

override func viewDidLayoutSubviews() {

  // This will create a properly-working menu barbuttonitem, but is of course
  // a text based title.

  navigationItem.leftBarButtonItem = UIBarButtonItem(title: "≡", 
    style: UIBarButtonItemStyle.Plain,
    target: splitViewController!.displayModeButtonItem().target,
    action: splitViewController!.displayModeButtonItem().action)

这个版本是我尝试使用自定义图像而不是文本标题,但我只是在图像应该出现的地方出现了一个灰色框。

  navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "29x29"), 
    style: .Plain, 
    target: splitViewController!.displayModeButtonItem().target, 
    action: splitViewController!.displayModeButtonItem().action)

有什么建议吗?
谢谢

您需要制作一个 UIButton 并在其中设置图像并将其设置为 leftBarButtonItem,就像在您的 -viewDidLoad:

中一样
let menuButton = UIButton(type: .Custom)
menuButton.frame = CGRectMake(0, 0, 29, 29)
menuButton.setImage(UIImage(named:"29x29"), forState: .Normal)
menuButton.addTarget(self, action: "menuPressed:", forControlEvents: .TouchUpInside)
let barButton = UIBarButtonItem(customView: menuButton)
navigationItem.leftBarButtonItem = barButton

并在单独的方法中执行您的操作:

func menuPressed(sender: AnyObject) {
    //show menu
}