【问题标题】:Configuring the backBarButtonItem of a View Controller's Navigation Item in a Storyboard在 Storyboard 中配置视图控制器的导航项的 backBarButtonItem
【发布时间】:2012-04-07 09:31:24
【问题描述】:

在 Interface Builder 的故事板中,将条形按钮项拖放到视图控制器的导航栏上很容易。这样,您可以设置视图控制器导航项的leftBarButtonItemrightBarButtonItem 出口。但是还有一个backBarButtonItem 插座,怎么设置一点都不明显。如何使用 Interface Builder 设置自定义后退栏按钮项?

【问题讨论】:

    标签: interface-builder uibarbuttonitem uinavigationitem uistoryboard


    【解决方案1】:
    • 选择要更改其导航项的视图控制器。显示视图控制器标识的黑条变为其引用对象的图标托盘。

    • 将一个条形按钮项从对象库拖放到托盘上。

    • 在左侧主对象托盘中右键单击视图控制器的导航项。将新添加的按钮连接为导航项的backBarButtonItem 插座。

    • 选择条形按钮并使用属性检查器以您选择的任何方式对其进行配置。

    【讨论】:

    • 我的导航项已经有一个backBarButtonItem 连线(因为它是推送转场的目的地)并且它是不可更改的。似乎没有办法真正改变后退按钮的标题——在属性检查器中设置“后退按钮”字段没有效果。
    • 如果您正在寻求解决方案并且发现以编程方式执行此操作的想法令人反感,我鼓励您为此创建一个单独的问题。不幸的是,你的情况我还没有遇到过。
    • @wcochran - 这也发生在我身上。这是Xcode中的一个小疏忽,解决方法是在对象库中选择UIBarButtonItem,然后将其拖到UINavigationItem的左侧栏按钮项上。你会看到一个蓝色的矩形出现,然后它会设置它,你可以像往常一样配置它。
    【解决方案2】:

    正如上面提到的@wcochran,当使用推送到navigationController 堆栈的viewControllers 时,backBarButtonItem 出口已经连接并且无法更改。此外,在 IB 中选择子 VC 的 navigationItem 并更改 Back Button 文本并没有达到您的预期。

    现在您可能认为替换子 VC 的 backBarButtonItem 可以解决问题,但事实并非如此。令人困惑的是,如果要设置子 VC 的后退按钮的标题,则必须设置其 parent (!) 的后退按钮标题,如下所示:

    - (void)viewWillAppear:(BOOL)animated // in the parent VC!
    {
        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
        self.navigationItem.backBarButtonItem = backButton;
    }
    

    这不会在父 VC 上做任何事情。事实上,如果parent是navigationController的RootViewController,根本不会有返回按钮。但是孩子会继承(或拿起)您创建的后退按钮。

    这仅适用于直接子 VC,因此如果您想通过 navigationController 的堆栈保持标签向下,您需要在每个父级上设置它。

    感谢#iphonedev 中的@wiliz 向我解释这一点。

    【讨论】:

    • 我从很久以前就回到了 iOS 开发领域,尽管取得了所有进步,但我们仍需要进行诸如此类的 hack。与 iOS 3.1.2 相比,情况并没有太大变化。谢谢你的回答。
    【解决方案3】:

    正如上面提到的@AdamBlock,您必须在父 VC 中正确设置。

    他展示了如何以编程方式执行此操作。也可以在界面生成器中执行此操作。

    • 选择父VC
    • 选择导航项
    • 打开属性检查器
    • 设置后退按钮的标题。

    【讨论】:

      【解决方案4】:

      在 Interface Builder 中,您可以更改 Navigation Item 后退按钮的标题。

      以编程方式,您可以在视图控制器的 viewDidLoad 方法中设置自定义后退按钮。在本例中,我们将按钮的图像设置为名为“customImage.png”的图像:

      - (void)viewDidLoad
      {
          [super viewDidLoad];
      
          UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStyleBordered target:self action:nil];
      
          // Set custom image here
          backButton.image = [UIImage imageNamed:@"customImage.png"];
          self.navigationItem.backBarButtonItem = backButton;
      }
      

      【讨论】:

      • 这是不正确的。请参阅我的回答,了解如何在 Interface Builder 中配置其他按钮属性。
      • @warrenm 也提供链接。所以用户可以直接得到这个答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2013-09-06
      相关资源
      最近更新 更多