2015-10-21 3 views
2

У меня есть вид, который вызывается из контроллера панели вкладок, где я хочу иметь leftBarButtonItem, topItem с логотипом и rightBarButtonItem.NavigationItem Left and Top не отображается

На этом первом взгляде мне удалось получить topItem с логотипом и rightBarButtonItem, но без возможности LeftBarButtonItem, программно или перетащить его в раскадровку. И я не понимаю, почему. Вот код.

private func setNavBarItems() { 

    self.navigationItem.leftBarButtonItem?.image = UIImage(named: "empty-photo-red") 

    if let navigationBar = self.navigationController?.navigationBar as? SeetyNavigationBar { 
     let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) 
     imageView.contentMode = .ScaleAspectFit 
     let image = UIImage(named: "logo-trans") 
     imageView.image = image 
     navigationBar.topItem?.titleView = imageView 
    } 

    self.navigationItem.rightBarButtonItem!.image = UIImage(named: "FAQ") 
} 

Если я развожу левый батончик с помощью «!» приложение аварии, так что я думаю, что нет leftBarButton, но почему?

И после того, как я выполню segue с этого вида на следующий, я получил leftBarButtonItem и rightBarButtonItem, а topItem с логотипом исчезнут. Я использую ту же функцию, что я называю в моем viewDidLoad()

EDIT: Для моего topItem который исчезающий: self.navigationItem.titleView = imageView и не navigationBar.topItem?.titleView = imageView решить эту проблему.

+0

Для первого контроллера внутри навигационной панели iOS автоматически не добавляет левую полосу, так как в ней нет «предыдущего» контроллера. Вам нужно будет добавить его вручную, если необходимо: Ref: http://stackoverflow.com/questions/20949844/add-left-and-right-bar-button-item-in-category-of-navigation-controller-class – Shripada

ответ

1

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

  • вам встроенный контроллер панели вкладок в навигации контроллера (который не является способом пойти кстати), так что положить ваши кнопки, вы должны put'em на родительском контроллере, как это, например,

    // adding right button 
    let changeLocButton = UIBarButtonItem() 
    changeLocButton.title = "/!\\" 
    changeLocButton.action = "AnnotationsStatus:" 
    changeLocButton.target = self 
    self.parentViewController?.navigationItem.setRightBarButtonItem(changeLocButton, animated: false) 
    
  • вам встроенный каждый из двух видов в контроллер навигации, поэтому вам нужно создать кнопки для просмотра КАЖДЫЙ.

    // adding right button 
    let changeLocButton = UIBarButtonItem() 
    changeLocButton.title = "/!\\" 
    changeLocButton.action = "AnnotationsStatus:" 
    changeLocButton.target = self 
    self.navigationItem.setRightBarButtonItem(changeLocButton, animated: false) 
    

для изображения это то же самое - случай 1:

if let navigationBar = self.parentViewController?navigationController?.navigationBar as? SeetyNavigationBar 

-случая 2: просто скопировать вставить код с навигационной панелью во втором контроллере представления

+0

Изображение, которое исчезает при следующем просмотре, когда я выполняю мой сеанс, - это topItem не leftBarButtonItem или rightBarButtonItem, извините, если было неясно – Luis

+0

ну, это то же самое, я обновлю ответ, но будьте понятным, навигационный контроллер, пожалуйста –

0

Swift 4,0

let btnBack = UIButton(type: .custom) 
btnBack.bounds = CGRect(x: 0, y: 0, width: 44, height: 44) 
btnBack.addTarget(self, action: #selector(self.backButtonAction(sender:)), for: .touchUpInside) 
btnBack.setImage(#imageLiteral(resourceName: "back_image"), for: .normal) 

let leftBarButton = UIBarButtonItem(customView: btnBack) 
self.navigationItem.setLeftBarButton(leftBarButton, animated: true) 

// Back Button Действие

@objc func backButtonAction(sender: UIButton) { 
self.navigationController?.popViewController(animated: true) 
} 
Смежные вопросы