#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 в раскадровку…