2015-05-20 12 views
27

Ich hätte gerne mehr als eine einzige UIBarButtonItem auf der rechten Seite meiner UINavigationBar. Wie kann ich das erreichen?Wie Sie mehrere UIBarButtonItems auf der rechten Seite der Navigationsleiste hinzufügen?

Ein Beispiel von dem, was ich versuche, sind unten gezeigt - Sie können feststellen, dass die obere rechte Taste mehr als eine Taste hat.

enter image description here

+0

möglich Duplikat von [Wie auf der rechten Seite ohne IB 2 Tasten in die UINavigationBar hinzufügen?] (Http://stackoverflow.com/questions/1803609/ how-to-add-2-buttons-in-the-uinavigationbar-on-the-right-side-ohne-ib) –

Antwort

61

verwenden in 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] 
} 

Schreiben Sie die Aktion Funktionen wie folgt aus:

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

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

danke, das hat funktioniert. – user1406716

+0

Dies als die Antwort markiert, da dies die einzige Antwort in swift ist, aber vielen Dank an alle, die geantwortet haben. – user1406716

+0

Fehler erhalten: Kontexttyp 'UIBarButtonItem' kann nicht mit Array-Literal verwendet werden – 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

Ich denke, nichts von dem oben geht

arbeiten

Versuchen Sie, diese

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) 

Sie haben navigationItem.setRightBarButtonItems verwenden und seien Sie vorsichtig. navigationItem muss von einem View-Controller sein.

class testViewController:UIViewController { 

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

} 

} 
0

Dies kann

- (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

Das OP fragt nach zwei Tasten auf der gleichen Seite. – daisy

1

In Swift 3 in , Hilfe für Sie sein können Sie:

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

einfach diesen Code hinzu:

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] 

Dies ist das Ergebnis:

enter image description here

Verwandte Themen