Изменения в панели навигации viewcontrollers на панели вкладок, не работающие из раскадровки

#ios #swift #uistoryboard

#iOS #swift #uistoryboard

Вопрос:

Я создал

NavigationController (Main) — > LoginViewController -> Tabbarviewcontroller -> HomeViewController

Если я добавлю элемент barbutton в HomeViewController через раскадровку, он не будет отображаться в симуляторе.

Но я вижу изменения в раскадровке.

введите описание изображения здесь

введите описание изображения здесь

Заголовок Home1 и элемент barbutton не отображаются в симуляторе

Комментарии:

1. добавьте скриншот своей раскадровки

2. @suhit — добавил скриншот

3. вы устанавливаете tintColor где-нибудь в приложении

4. @zombie — Да в главном navigationviewcontroller

5. вы должны либо изменить это в коде, либо в раскадровке, но конечным будет код

Ответ №1:

Попробуйте этот код: Протестировано в Swift 3:

Примечание: Удалите все свои элементы barButtonItems и попробуйте приведенный ниже код.

Добавьте этот код в свой Home1 VC:

 override func viewWillAppear(_ animated: Bool) {
    let RightButtomitem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(handler)) 
    self.tabBarController?.navigationItem.rightBarButtonItem = RightButtomitem
}

func handler(sender:UIButton) {
    print("Add Button pressed")
}
  

Добавьте этот код в свой Home2 VC:

 override func viewWillAppear(_ animated: Bool) {
    let RightButtomitem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(handler)) 
    self.tabBarController?.navigationItem.rightBarButtonItem = RightButtomitem
}

func handler(sender:UIButton) {
     print("Done Button Pressed")
}
  

Вывод:

введите описание изображения здесь

Ответ №2:

Сначала вы скрываете панель навигации в NavagationController и создаете пользовательскую панель после добавления в нее того, что вы хотите в bar.

Комментарии:

1. Если мы скроем панель навигации, мне нужно добавить все viewcontrollers

2. предположим, вы не показываете кнопку «Назад» ни в одном VC, тогда вы просто не добавляете в свою пользовательскую панель …… означает, что когда вы устанавливаете свою пользовательскую панель, вы делаете по-своему. когда вы делаете один раз, вы только копируете мимо него в своей раскадровке..

3. Теперь я скрыл панель навигации из navigationviewcontroller. Теперь добавлена отдельная панель навигации в каждом viewcontrollers. Когда я добавил панель навигации, она не расширяется до строки состояния, вместо этого она находится ниже строки состояния высотой 44 пикселя

4. Сначала вы скрываете панель навигации, чтобы снять флажок показывать панель в главном контроллере навигации.. Затем возьмите один пользовательский интерфейс высотой 64 и с той же шириной экрана …. теперь вы берете одну кнопку высотой 44 и шириной 44 и устанавливаете левую нижнюю часть, теперь вы получаете одну UILabel, которая имеет заголовок, поэтому устанавливается посередине и стратифицируется в кнопке «Назад»..

Ответ №3:

Вы можете попробовать это программно

HomeViewController —

 override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(true) 
    let barButtomitem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(handler)) 
    self.tabBarController?.navigationItem.rightBarButtonItem = barButtomitem
}
  

SecondItemViewController—

 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true)
    self.tabBarController?.navigationItem.rightBarButtonItem = nil
}
  

и не добавляйте barbutton в раскадровку…