如何在导航栏的右侧添加多个UIBarButtonItem?

时间:2015-05-20 05:49:47

标签: ios uinavigationbar uibarbuttonitem

我希望在UIBarButtonItem的右侧有多个UINavigationBar。我怎样才能做到这一点?

我正在尝试的示例如下所示 - 您可以注意到右上方有多个按钮。

enter image description here

11 个答案:

答案 0 :(得分:118)

在swift中使用它:

override func viewDidLoad() {
  super.viewDidLoad()

  let editImage    = UIImage(named: "plus")!
  let searchImage  = UIImage(named: "search")!

  let editButton   = UIBarButtonItem(image: editImage,  style: .Plain, target: self, action: "didTapEditButton:")
  let searchButton = UIBarButtonItem(image: searchImage,  style: .Plain, target: self, action: "didTapSearchButton:")

  navigationItem.rightBarButtonItems = [editButton, searchButton]
}

写下这样的动作函数:

func didTapEditButton(sender: AnyObject){
    ...
}

func didTapSearchButton(sender: AnyObject){
    ...
}

答案 1 :(得分:7)

ng-init

答案 2 :(得分:4)

我认为上述内容无效

试试这个

broker.id=1
port=9093
num.network.threads=3
 num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs-1
num.partitions=1
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000

您必须使用 navigationItem.setRightBarButtonItems 并小心谨慎。 navigationItem必须是视图控制器。

var burgerItem = UIBarButtonItem(image: UIImage(named:"categories"), style: .Plain, target: self, action: "categories")
        var weatherItem = UIBarButtonItem(title: "Weather", style: .Plain, target: self, action: "weather")


        burgerItem.tintColor = UIColor.whiteColor()
        weatherItem.tintColor = UIColor.whiteColor()

        navigationItem.setRightBarButtonItems([burgerItem,weatherItem], animated: true)

答案 3 :(得分:4)

在Swift 3中,您可以使用:

let editImage   = UIImage(named: "plus")!
let searchImage = UIImage(named: "search")!

let editButton   = UIBarButtonItem(image: editImage,  style: .plain, target: self, action: #selector(didTapEditButton))
let searchButton = UIBarButtonItem(image: searchImage,  style: .plain, target: self, action: #selector(didTapSearchButton))

navigationItem.rightBarButtonItems = [editButton, searchButton]

答案 4 :(得分:3)

只需添加以下代码:

self.navigationItem.leftBarButtonItem = nil

let button = UIButton(type: .custom)
button.setImage(UIImage (named: "ChatTab"), for: .normal)
button.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0)
//button.addTarget(target, action: nil, for: .touchUpInside)
let barButtonItem = UIBarButtonItem(customView: button)

let button2 = UIButton(type: .custom)
button2.setImage(UIImage (named: "ActivityTab"), for: .normal)
button2.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0)
//button.addTarget(target, action: nil, for: .touchUpInside)

let barButtonItem2 = UIBarButtonItem(customView: button2)
self.navigationItem.rightBarButtonItems = [barButtonItem, barButtonItem2]

结果如下:

enter image description here

答案 5 :(得分:1)

使用Swift 4

let editImage       = UIImage(named: "toolbar_edit")!
let favoriteImage   = UIImage(named: "toolbar_fav_solid")!

let editButton      = UIBarButtonItem(image: editImage,  style: .plain, target: self, action: #selector(didTapEditButton))
let favoriteButton  = UIBarButtonItem(image: favoriteImage,  style: .plain, target: self, action: #selector(didTapFavoriteButton))

navigationItem.rightBarButtonItems = [editButton, favoriteButton]

点击这些按钮的操作

@objc func didTapEditButton(sender: AnyObject) {
    print("edit")
}

@objc func didTapFavoriteButton(sender: AnyObject) {
    print("favorite")
}

输出屏幕截图(iPhone X)

enter image description here

答案 6 :(得分:0)

中,这可能对您有所帮助
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.navigationItem.title = @"Title";
        UIBarButtonItem *logOutButton = [[UIBarButtonItem alloc] initWithTitle:@"Logout" style:UIBarButtonItemStylePlain target:self action:@selector(ButtonClickedAtIndex1:)];
        [logOutButton setTintColor:[UIColor blackColor]];
        logOutButton.tag = 1;

        UIBarButtonItem *syncBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Sync" style:UIBarButtonItemStylePlain target:self action:@selector(ButtonClickedAtIndex1:)];
        [syncBarButtonItem setTintColor:[UIColor blackColor]];
        syncBarButtonItem.tag = 2;

        self.navigationItem.leftBarButtonItem = logOutButton;
        self.navigationItem.rightBarButtonItem = syncBarButtonItem;

       float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

       if (systemVersion >= 7.0) {
           self.edgesForExtendedLayout = UIRectEdgeNone;
           self.navigationController.navigationBar.translucent = NO;
       }
    }
    return self;
}

答案 7 :(得分:0)

使用navigationItem的rightBarButtonItems,该数组采用UIBarButton的数组。 Appledoc

let share = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(shareTapped))
let add = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
navigationItem.rightBarButtonItems = [add, share]

答案 8 :(得分:0)

我不知道以前是否不可能使用Interface Builder解决方案,但是至少使用最新更新(Xcode 11.0),可以将两个UI Bar Buttons拖到rightBarButton空间中。然后可以像往常一样将两个出口和动作拖到代码中。

由于OP没有要求没有IB的解决方案,我认为这也可以作为答案。

答案 9 :(得分:0)

可接受的答案以及很少的答案是绝对正确的,但在我看来,这些答案都不起作用。

原因:我的View Controller继承自UIViewController,我必须在右侧设置“添加到购物车按钮”和“搜索按钮”。而且我所有的视图控制器都是UITabbarController的一部分。

    let editImage = UIImage(named: "OrdersTabIcon")
    let searchImage = UIImage(named: "OrdersTabIcon")
    let editButton = UIBarButtonItem(image: editImage, style: .plain, target: self, action: #selector(iconTapped))
    let searchButton = UIBarButtonItem(image: searchImage, style: .plain, target: self, action: #selector(iconTapped))

代替使用

 self.navigationItem.setRightBarButtonItems([editButton, searchButton], animated: true)

使用此内容。

self.navigationController?.navigationBar.topItem?.setRightBarButtonItems([editButton, searchButton], animated: true)

答案 10 :(得分:-1)

适用于具有新更新的Xamarin Ios。就像。

UIBarButtonItem Button1 = new UIBarButtonItem(UIImage.FromBundle("Image1"), UIBarButtonItemStyle.Plain,YourEventHandler);

UIBarButtonItem Button2 = new UIBarButtonItem(UIImage.FromBundle("Image1"), UIBarButtonItemStyle.Plain,YourEventHandler);

NavigationItem.SetRightBarButtonItems(new[]{ Button1, Button2 }, true);