0

Я пытаюсь добавить навигационную панель динамически, но происходит что-то странное.Как добавить кнопку на NavigationBar динамически (во время выполнения)? - Swift 2.0

Мой Экран просто UINavigation и Просмотр с красным фоном:

enter image description here

И это мой Swift код:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var navBar: UINavigationBar! 

    @IBOutlet var viewLongPress: UIView! 

    var viewLongPressInitialPosition: CGPoint! 

    var frameSize: CGSize { 
     get { 
      return self.view.frame.size 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     navBar.frame.size.height = 64.0 

     viewLongPress.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: "viewLongPressAction:")) 

     viewLongPressInitialPosition = viewLongPress.frame.origin 
    } 

    func viewLongPressAction(sender: UILongPressGestureRecognizer) { 

     let locationInView = sender.locationInView(self.view) 

     if sender.state == .Began { 

     } else if sender.state == .Changed { 

      viewLongPress.frame.origin = CGPoint(x: locationInView.x - (viewLongPress.frame.width/2), y: locationInView.y - (viewLongPress.frame.height/2)) 

     } else if sender.state == .Ended { 

      if locationInView.y <= navBar.frame.height { 

       let item = UINavigationItem() 
       item.rightBarButtonItems = [UIBarButtonItem(title: "Test", style: .Plain, target: nil, action: "noAction:")] 

       navBar.items?.append(item) 

      } 

      viewLongPress.frame.origin = viewLongPressInitialPosition 
     } 
    } 

    func noAction(sender: AnyObject) { 

    } 
} 

Я пытаюсь добавить a UINavigationItem, чтобы закончить перетаскивание вида сверху navigat ионный бар.

Но когда я добавить кнопку, панель навигации выглядит следующим образом:

enter image description here

должны быть добавлены и выглядеть кнопка:

enter image description here

Я думаю, что я м чего-то не хватает, но я не могу решить.


Я попытался добавить вторую кнопку (leftBar), но название исчезло.

И если у вас уже есть кнопка, как добавить еще одну кнопку?


Может кто-нибудь мне помочь?

Спасибо за ответ.

ответ

2

Вы заменяете все свое UINavigationItem, которое, вероятно, не то, что вы хотите. Попробуйте вместо этого self.navigationItem.rightBarButtonItem = .... Вам даже не нужно взаимодействовать с фактической навигационной панелью, только элемент навигации текущего контроллера (который также содержит название).

Редактировать: похоже, ваш navBar уже имеет элемент навигации. Что произойдет, если вы выполните следующее задание: self.navBar.items.first?.rightBarButtonItem = ...

+0

Я понимаю, но мне нужно сделать это с UINavigationBar. – James

+0

Что такое "UINavigation"? – Andreas

+0

Это: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationBar_Class/index.html – James

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

  • Нет связанных вопросов^_^