Ios 将图像设置为backButton

Ios 将图像设置为backButton,ios,swift,uinavigationcontroller,uinavigationbar,Ios,Swift,Uinavigationcontroller,Uinavigationbar,我试图将BackButton设置为图像,而不是标准文本和backArrow,但无论我做什么,它都不会起作用。我尝试过隐藏BackButton并设置leftBarbutton,但是BackButton没有隐藏,我尝试过如下设置BackBarButtonim,但仍然只显示标准BackButton。我做错了什么 var backButton:UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "left"), style: UIBar

我试图将BackButton设置为图像,而不是标准文本和backArrow,但无论我做什么,它都不会起作用。我尝试过隐藏BackButton并设置leftBarbutton,但是BackButton没有隐藏,我尝试过如下设置BackBarButtonim,但仍然只显示标准BackButton。我做错了什么

    var backButton:UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "left"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("goBack:"))

    self.navigationController?.navigationItem.backBarButtonItem = backButton
现在尝试

    var backButton:UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "left"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("goBack:"))

    self.navigationController?.navigationItem.leftBarButtonItem = backButton

您不应该直接使用
self.navigationController?.navigationItem
,而应该使用
self.navigationItem

但无论如何,要了解更多背景:

当此导航项位于堆栈顶部项的正下方时,导航控制器将从此导航项派生导航栏的“后退”按钮

(来自苹果公司的
backbarbuttonim
)

这意味着,
backBarButton
项属性只能更改推到
UINavigationController
堆栈上的下一个viewController的后退按钮外观

要达到预期效果,您可以

  • 设置一个
    leftBarButtonItem
    (这将自动隐藏后退按钮),并在单击时手动调用
    self.navigationController.popViewControllerAnimated(true)
  • 使用
    UINavigationBar.appearance()
    API
  • 取一个UIButton并设置其图像、边框和添加目标

    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *backButtonImage = [UIImage imageNamed:@"MyImage"];
    [backButton setImage:backButtonImage forState:UIControlStateNormal];
    [backButton setImage:backButtonImage forState:UIControlStateHighlighted];
    backButton.frame = CGRectMake(0, 0, 40, 40);
    [backButton addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
    
  • 使用此backButton定义UIBarButtonItem并将其指定给 self.navigationItem.LeftBarButtonim

    UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    self.navigationItem.leftBarButtonItem = barButtonItem;
    

  • 如何设置backButton不可见,因为我已尝试将hideBackButton设置为true,但没有工作更新答案。设置leftBarButtonItem应自动隐藏后退按钮。另外,设置hidesBackButton可能会干扰这一点,因此请尝试仅设置leftBarButton项我已将当前代码添加到viewController中。正在显示viewController,例如,如果出现差异,请按。我认为您不应直接使用
    self.navigationController?.navigationItem
    ,而应使用
    self.navigationItem
    !我很确定他用的是swift而不是objc