#ios #swift #uibarbuttonitem #uitoolbar
#iOS #swift #uibarbuttonitem #uitoolbar
Вопрос:
Я использую init(title:image:primaryAction:menu:)
документацию Apple по UIBarButtonItem на панели инструментов в надежде отобразить кнопку как с изображением, так и с заголовком. Кто-нибудь знает, почему заголовок не отображается? Я не ищу пользовательскую реализацию, которая может добавить UIBarButtonItem с заголовком и изображением. Я много видел в Stackoverflow. Я просто хочу использовать этот инициализатор, если он работает.
У меня есть подкласс UITableViewController, и я добавил этот код в viewDidLoad
navigationController?.isToolbarHidden = false
let barButtonItem = UIBarButtonItem(title: "New Item", image: UIImage(systemName: "plus.circle.fill"), primaryAction: nil, menu: nil)
toolbarItems = [barButtonItem]
Ответ №1:
Я предполагаю, что поскольку public convenience init(title: String? = nil, image: UIImage? = nil, primaryAction: UIAction? = nil, menu: UIMenu? = nil)
это convenience
инициализация, и тот факт, что нет инициализации, которая инициализируется как заголовком, так и изображением, то одновременное использование обоих не поддерживается. Это просто удобство при использовании primaryAction и menu, а затем с заголовком и изображением.
Ответ №2:
Попробуйте назначить пользовательскую кнопку для вашей кнопки navBar, объявите свою кнопку в своем классе контроллера:
let myButton = UIButton(type: .system)
теперь в viewDidLoad установите пользовательскую кнопку с заголовком и назначьте ее панели навигации:
myButton.setImage(UIImage(systemName: "square.and.arrow.up"), for: .normal)
myButton.setTitle(" your text", for: .normal)
myButton.sizeToFit()
myButton.addTarget(self, action: #selector(yourFunctionAction), for: .touchUpInside)
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: myButton)
Комментарии:
1. Спасибо! Но, как я уже упоминал в своем вопросе, я видел многие из этих ответов в Stackoverflow раньше с пользовательской реализацией, как у вас. В этом нет ничего плохого, но это не мой вопрос. Я хочу понять, почему конкретный инициализатор, предоставленный Apple, не работает.