2015-07-08 5 views
0

Мне нужно добавить два элемента кнопки бара на каждый конец моего пользовательских панель навигации в Swift. Я использую следующий метод, и, хотя у меня нет ошибок, ничего не появляется. Я использую свои собственные значки, которые появляются, когда я добавляю их с помощью построителя интерфейса. Очевидно, я могу только добавить один к каждому концу.Добавление нескольких настраиваемых кнопок панели в пользовательскую панель навигации

@IBOutlet weak var navBar: UINavigationBar! 

    override func viewDidLoad() { 

      var iconOne = UIImage(named: "iconOne") 
      var iconTwo = UIImage(named: "iconTwo") 

      var buttonOne:UIBarButtonItem = UIBarButtonItem(image: iconOne, style: UIBarButtonItemStyle.Plain, target: self, action: nil) 
      var buttonTwo:UIBarButtonItem = UIBarButtonItem(image: iconTwo, style: UIBarButtonItemStyle.Plain, target: self, action: nil) 

      self.navBar.setItems([buttonOne,buttonTwo], animated: true) 

    } 

Это реализовано в контроллере вида, встроенном в контроллер навигации. Я бы мог использовать self.navigationItem.setRightBarButtonItems([buttonOne, buttonTwo], animated: true), если бы я не использовал настраиваемую навигационную панель. Каков обходной путь?

ответ

0

UIBarButtonItem могут быть созданы с помощью настраиваемого представления

  • создать представление
  • добавить UIButtons к нему
  • макет он
  • создать UIBarButtonItem с пользовательской точки зрения
  • добавить к навигации бар
+0

Это то, что я пытаюсь сделать. Как мне это сделать? – chicobermuda

+0

так же, как я объяснил это. – vikingosegundo

+0

В коде. Я понимаю ваш английский. Я не понимаю этот метод. Как я могу создать представление и выложить его? – chicobermuda

0

Этот код работает для меня:

@IBOutlet weak var navBar: UINavigationBar! 
@IBOutlet weak var navBarItem: UINavigationItem! 

func displayTextInNavBar(text: String) { 

    let labelWidth: CGFloat = navBar.frame.width/6 
    let frame = CGRect(x: 0, y: 0, width: labelWidth, height: navBar.frame.height) 
    let label = UILabel(frame: frame) 

    label.textAlignment = .Right 
    label.textColor = UIColor(red: 0/255, green: 127/255, blue: 0/255, alpha: 1) 
    label.font = UIFont(name: "Bradley Hand", size: 20) 
    label.text = text 

    let navBarButtonItem = UIBarButtonItem(customView: label) 
    navBarItem.rightBarButtonItem = navBarButtonItem 
} 

выше ставит метку на правой стороне NavBar. Если вы хотите реальную кнопку, которая интерактивное, сделать это вместо того, чтобы:

let navBarButtonItem = UIBarButtonItem(title: text, style: .Plain, target: self, action: nil) 

Если вы хотите эту кнопку, чтобы сделать что-то при нажатии, то вместо nil указать некоторую функцию.

Смежные вопросы