【问题标题】:UINavigationItem: Add one more buttonUINavigationItem:再添加一个按钮
【发布时间】:2013-05-08 21:48:18
【问题描述】:

如何在 navigationItem 中添加新按钮?假设我需要在右侧按钮附近添加它。

用于左右的代码。

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_cancelButton];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_shareButton];

如何再添加一个按钮?

【问题讨论】:

  • 参考link
  • @Jyotishree 谢谢...让我这样试试。
  • 向 UIView 添加按钮,然后将该视图添加为右栏按钮项。
  • @BobApple,尝试过..没有成功..请提供任何样品...
  • 好的,让我发布详细答案。

标签: iphone objective-c uinavigationitem


【解决方案1】:

在navigationcontroller的右侧添加多个按钮有不同的方法。下面给出了一种最简单的方法

 UIView *buttonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 44)];

UIButton *exampleButton1 = [UIButton buttonWithType:UIButtonTypeCustom];
exampleButton1.frame = CGRectMake(0, 2, 30, 40);
[exampleButton1 addTarget:self action:@selector(FirstMethod) forControlEvents:UIControlEventTouchUpInside];
[exampleButton1 setImage:[UIImage imageNamed:@"image1.png"] forState:UIControlStateNormal];
[buttonView addSubview:exampleButton1];


UIButton *exampleButton2 = [UIButton buttonWithType:UIButtonTypeCustom];
exampleButton2.frame = CGRectMake(70, 2, 30, 40);
[exampleButton2 addTarget:self action:@selector(Second method) forControlEvents:UIControlEventTouchUpInside];
[exampleButton2 setImage:[UIImage imageNamed:@"image2.png"] forState:UIControlStateNormal];

[buttonView addSubview:exampleButton2];

 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonView];

希望对你有所帮助。谢谢

【讨论】:

    【解决方案2】:

    您可以添加更多按钮

    self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:uibarbuttonInstance1, uibarbuttonInstance2, nil];
    

    右键也一样

    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:uibarbuttonInstance1, uibarbuttonInstance2, nil];
    

    【讨论】:

    • 我之前和现在都试过了...崩溃了:-[UIButton isSystemItem]: unrecognized selector sent to instance 0xa68b840'
    • 添加 UIBarButton 而不是 UIbutton
    • @iPhoneProcessor,虽然为时已晚。我遇到了和你一样的问题。我实际上是将 UIImage 而不是 UIBarButton 放入数组中。
    【解决方案3】:

    中间按钮

    UIButton *btnShow = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 34, 34)];
        btnShow.backgroundColor = [UIColor colorWithWhite:0.411 alpha:1.000];
        [btnShow setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal];
        [btnShow setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateHighlighted];
        self.navigationItem.titleView = btnShow;
    

    右栏按钮

     UIButton *tempButton1 = [UIButton buttonWithType:UIButtonTypeCustom];
        [tempButton1 setFrame:CGRectMake(0, 0, 34, 34)];
        tempButton1.tag = 0;
        [tempButton1 addTarget:self action:@selector(btnBackClicked:) forControlEvents:UIControlEventTouchUpInside];
    
        [tempButton1 setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal];
        [tempButton1 setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateHighlighted];
        [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:tempButton1]];
    

    左栏按钮

    UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [tempButton setFrame:CGRectMake(0, 0, 34, 34)];
    [tempButton addTarget:self action:@selector(btnBackClicked:) forControlEvents:UIControlEventTouchUpInside];
    [tempButton setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal];
    [tempButton setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateHighlighted];
    [self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:tempButton]
    

    输出

    【讨论】:

    • 在 TitleView 中您放置了 Text 或什么 ????好的...如果是这样...您需要文本和按钮,或者在文本本身中充当按钮
    【解决方案4】:
    NSArray *tempArray2= [[NSArray alloc] initWithObjects:self.shareBtn,self.gameCenterBtn,nil];
    self.navigationItem.leftBarButtonItems=tempArray2;
    

    【讨论】:

      【解决方案5】:

      试试这个。它对我有用。

      UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
          flex.width = 20;
          UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
          [btn setFrame:CGRectMake(0, 0, 40, 30)];
          [btn setImage:[UIImage imageNamed:@"mac-gray.png"] forState:UIControlStateNormal];
      
          UIBarButtonItem *bar1 = [[UIBarButtonItem alloc]initWithCustomView:btn];
      
          UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeCustom];
          [btn2 setFrame:CGRectMake(0, 0, 40, 30)];
          [btn2 setImage:[UIImage imageNamed:@"mac-gray.png"] forState:UIControlStateNormal];
      
          UIBarButtonItem *bar2 = [[UIBarButtonItem alloc]initWithCustomView:btn2];
      
          self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:bar1,flex,bar2, nil];
      

      【讨论】:

      • @iPhoneProcessor 这对你有帮助吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多