TitleView изображения UINavigationItem UITableViewController не отображается

Я использую Swift 2.3 в Xcode 7.3. У меня есть UINavigationController с UITableViewController. Я пытаюсь установить titleView элемента навигации в панели навигации, чтобы создать кнопку по центру панели навигации.

indexTextBut — это UIButton, подключенный к раскадровке. Я попытался просто создать новую кнопку, и это не имело заметного значения. То, как я сейчас это делаю, кнопка есть, поскольку она ведет себя так, как должна, но без изображения. Я попытался просто установить поле заголовка в виде строки, но даже тогда я ничего не вижу. Я установил правый и левый barButtonItems, используя:

navItem.setRightBarButtonItems(barButtonItems, animated: false)
navItemArray.append(navItemCatDet)
self.navigationController?.navigationBar.setItems(navItemArray, animated: false)

Вот мой соответствующий код. Мой большой вопрос: почему я не вижу изображение кнопки, установленной в titleView. У него предустановленное поведение, и когда я нажимаю там, где оно должно быть, я получаю это поведение. Я пытался настроить рамку UIButton и его UIImageView, а также размер изображения UIImageView, но мне не повезло. Я включил строку о тонировании фона на всякий случай, если это связано, хотя я пробовал это с и без.

class MyTableViewController: UITableViewController, UITextFieldDelegate {

  @IBOutlet weak var indexTextBut: UIButton!

  override func viewDidLoad() {
    super.viewDidLoad()

    var indexNavItemArray = [UINavigationItem]()
    var indexNavItem = UINavigationItem()

    indexNavItem.titleView = newButton
    indexNavItemArray.append(indexNavItem)

    self.navigationController?.navigationBar.barTintColor = UIColor(netHex:0xe63246)
    self.navigationController?.navigationBar.setItems(indexNavItemArray, animated: false)

person Shreck    schedule 13.12.2016    source источник


Ответы (1)


Свифт 3.0

var indexNavItemArray = [UINavigationItem]()
        var indexNavItem = UINavigationItem()

        indexNavItem.titleView = indexTextBut
        indexTextBut.setTitle("button", for: .normal)
        indexNavItemArray.append(indexNavItem)
         self.navigationController?.navigationBar.barTintColor = UIColor.lightGray

        self.navigationController?.navigationBar.setItems(indexNavItemArray, animated: false)

замените свой код на приведенный выше.

person john afordis    schedule 13.12.2016
comment
Я использую Swift 2. Код было легко преобразовать в Swift 2, разница была только в forState: .Normal вместо for: .normal. Тем не менее, это не сработало, я все еще не вижу визуальной индикации кнопки или даже текста заголовка (кнопки). - person Shreck; 13.12.2016