2015-05-20 144 views
27

我想在我的UINavigationBar的右側有多個UIBarButtonItem。我怎樣才能做到這一點?如何在導航欄的右側添加多個UIBarButtonItems?

下面顯示了我正在嘗試的一個示例 - 您可以注意到右上角有多個按鈕。

enter image description here

+0

可能重複的[如何增加2個按鈕進入UINavigationBar的右側而不IB?](http://stackoverflow.com/questions/1803609/ how-to-add-2-buttons-into-the-uinavigationbar-on-the-right-side-without-ib) –

回答

61

使用此斯威夫特:

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){ 
    ... 
} 
+0

謝謝你,工作。 – user1406716

+0

將此標記爲答案,因爲這是迅速回答的唯一答案,但非常感謝所有回答的人。 – user1406716

+0

獲取一個錯誤:上下文類型'UIBarButtonItem'不能用於數組literal' – Profstyle

1
-(void)viewDidLoad{ 

    UIBarButtonItem *anotherButton1 = [[UIBarButtonItem alloc] initWithTitle:@"Button_1" style:UIBarButtonItemStylePlain target:self action:@selector(button_1:)]; 

    UIBarButtonItem *anotherButton2 = [[UIBarButtonItem alloc] initWithTitle:@"Button_" style:UIBarButtonItemStylePlain target:self action:@selector(button_2:)]; 

    [email protected][anotherButton1,anotherButton2]; 
} 
2

我覺得沒有什麼上面去上班

試試這個

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) 

你必須使用navigationItem.setRightBarButtonItems並要小心。 navigationItem必須是視圖控制器。

class testViewController:UIViewController { 

ovverride func viewDidLoad() { 
    self.navigationItem.setRightBarButtonItems(... 

} 

} 
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; 
} 
+0

OP要求在同一側有兩個按鈕。 – daisy

1

在斯威夫特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] 
0

只需添加以下代碼:

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