【问题标题】:Adding two right bar button items to the navigation bar向导航栏添加两个右栏按钮项
【发布时间】:2012-08-21 15:27:02
【问题描述】:

我有一个导航栏,我已成功添加了右 BarButton。 NavigationBar 和 BarButton 都是以编程方式创建的。现在根据我的要求,我必须在导航栏中添加两个正确的 BarButton。谁能告诉我该怎么做?我的应用面向 ios4。

【问题讨论】:

    标签: objective-c xcode4 ios4 uinavigationcontroller uibarbuttonitem


    【解决方案1】:

    此代码将为您解决问题,

     NSArray *barButtonItems= [[NSArray alloc] initWithObjects:self.addButton,self.sortbyButton,nil];
    self.navigationItem.rightBarButtonItems=barButtonItems;
    

    addButton 和 sortbyButton 是 2 个独立的 BarButton 项

    【讨论】:

    • self.navigationItem.rightBarButtonItems 从 IOS 5 开始工作。它不适用于 IOS 4。我的应用程序针对 IOS 4
    【解决方案2】:

    我知道为时已晚,但我最近遇到了。所以这就是我所做的 在代码中创建一个 UIView 并将按钮作为子视图添加到此视图中。 使用 [[UIBarButtonItem alloc] initWithCustomView:buttons] 创建一个 ToolbarButton

    如你所愿,将此工具栏按钮指定为左或右 barbuttonItem。

    【讨论】:

      【解决方案3】:
      NSArray *segmentTextContent = [NSArray arrayWithObjects:
                                     NSLocalizedString(@\"Group By\", @\"\"),
                                     NSLocalizedString(@\"Filter By\", @\"\"),
                                     nil];
      UISegmentedcontrol *segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTextContent];
      segmentedControl.selectedSegmentIndex = 0;
      segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
      segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
      segmentedControl.frame = CGRectMake(0, 0, 125, 30);
      [segmentedControl addTarget:self action:@selector(toggleUnit) forControlEvents:UIControlEventValueChanged];
      
      segmentedControl.tintColor = [UIColor lightGrayColor];
      defaultTintColor = [segmentedControl.tintColor retain];
      
      self.navigationItem.rightBarButtonItem = segmentedControl;
      [segmentedControl release];
      

      【讨论】:

      • 我通过使用工具栏而不是分段控件完成了我的任务
      • 你的意思是说你用工具栏替换了整个导航栏。是吗?或者您将工具栏添加到 UINavigationBar ?
      • 我将工具栏添加到导航栏
      【解决方案4】:

      @Matthias,如文档中所述,rightBarButtonItems 属性适用于 iOS 5 及更高版本,此功能也需要在 iOS 4 上支持。

      因此,UISegmentControl 是实现这一目标的最佳方式。

      【讨论】:

      • 你能给我一个例子,说明如何使用 UISegmentControl 来完成我的任务。
      【解决方案5】:

      正如UINavigationItem1 的文档所述,它有一个属性rightBarButtonItems(以及leftBarButtonItems),您可以在其中提供UIBarButtons 的数组。它们从右(索引 0)到左(索引 n-1)显示。

      【讨论】:

      • 我已经明确指出我的应用面向 IOS 4。self.navigationItem.rightBarButtonItems 从 IOS 5 开始工作
      • @user1626799:IOS5 于 2012 年 3 月推出。rightBarButtonItemsexist 自 2011 年 10 月起(至少,如果修订文档正确)
      • @Matthais:我已经对其进行了测试,但它在 IOS 4 中不起作用。据我所知,它在 IOS 4 中不起作用。你也可以跟进 BornCoder 的以下评论
      • @user1626799:我错了,早期是IOS 5的预版本。
      • @Matthais:哦,好吧。你能告诉我如何在IOS 4中完成我的任务
      【解决方案6】:

      如果您的应用程序面向 iOS 4 及更高版本,那么您应该使用 UISegmentControl 并在其上设置两个段。捕获值更改操作事件并检查选择了哪个段并进行相应操作。

      您还可以将图像设置为分段,以使外观和感觉更好。

      【讨论】:

      • 你能举个例子吗