Почему программно созданные (нижние) заголовки кнопок панели инструментов не отображаются?

В Swift 3 я программно создал (нижнюю) панель инструментов с настраиваемыми кнопками, разделенными гибкой прокладкой для разделения настраиваемых кнопок, нажимая одну ("Предыдущая") на левом краю, а другую ("Следующая") вправо. край зрения. Но я не смог отобразить названия кнопок ("Предыдущая" и "Далее"). Пожалуйста, посоветуй мне. Благодарю. Вот мой код:

Во-первых, объявление класса и несколько переменных:

class TextsController: UIViewController,UIGestureRecognizerDelegate {

let textWebView = WKWebView(frame: .zero)
var toolbar:UIToolbar?

Далее в viewDidLoad:

    view = textWebView

    // Create (bottom) toolbar:
    let frame = CGRect(x: 0, y: UIScreen.main.bounds.size.height-44, width: UIScreen.main.bounds.size.width, height: 44)
    toolbar = UIToolbar(frame: frame)
    toolbar?.sizeToFit()
    toolbar?.isHidden = true
    self.view.addSubview(toolbar!)
    self.toolbar?.isTranslucent = false // Required for setting tintColor & barTintColor below

    toolbar?.tintColor = UIColor(red: 0.5, green: 0.0, blue: 1.0, alpha: 1.0) //purple for toolbar items
    toolbar?.barTintColor = UIColor.white //white for toolbar color

    let triangleLeftButton = UIBarButtonItem(image: UIImage(named: "triangleLeft_15x20"), style: .plain, target: self, action:#selector(showPrevious))
    let flexibleSpacer = UIBarButtonItem(barButtonSystemItem:.flexibleSpace , target: self, action: nil)
    let triangleRightButton = UIBarButtonItem(image: UIImage(named: "triangleRight_15x20"), style: .plain, target: self, action:#selector(showNext))

    triangleLeftButton.title = "Previous"
    triangleRightButton.title = "Next"

    var items = [UIBarButtonItem]()
    items.append(triangleLeftButton)
    items.append(flexibleSpacer)
    items.append(triangleRightButton)
    toolbar?.items = items

2 ответа

Решение

Вот как я это решил.

Я исключил два оператора, пытаясь назначить заголовок каждой кнопке (мне непонятно, почему XCode не пометил это, что позволило мне назначить заголовок каждому изначально, хотя ни один заголовок не отображался).

Я переписал (сравните приведенный ниже код с кодом в вопросе) UIBarButtonItems следующим образом, чтобы теперь включить два текстовых элемента:

    // Create toolbar items (buttons and texts)
    let triangleLeftButton = UIBarButtonItem(image: UIImage(named: "triangleLeft_15x20"), style: .plain, target: self, action:#selector(showPrevious))
    let triangleLeftText = UIBarButtonItem(title: "Previous", style: .plain, target: nil, action: nil)
    let flexibleSpacer = UIBarButtonItem(barButtonSystemItem:.flexibleSpace , target: self, action: nil)
    let triangleRightText = UIBarButtonItem(title: "Next", style: .plain, target: nil, action: nil)
    let triangleRightButton = UIBarButtonItem(image: UIImage(named: "triangleRight_15x20"), style: .plain, target: self, action:#selector(showNext))

Затем я добавил в массив все, включая два новых текстовых элемента:

    var items = [UIBarButtonItem]()
    items.append(triangleLeftButton)
    items.append(triangleLeftText)
    items.append(flexibleSpacer)
    items.append(triangleRightText)
    items.append(triangleRightButton)
    toolbar?.items = items

Это эффективно помещает "Назад" рядом с кнопкой, указывающей влево, и "Далее" рядом с кнопкой, указывающей вправо, с гибкой прокладкой, обеспечивающей хороший широкий промежуток между ними.

Элемент кнопки пользовательского представления или панели изображений не имеет заголовка. Элемент панели кнопок - это либо заголовок, либо пользовательский вид, либо изображение. Если вы хотите, чтобы некоторые слова появлялись в пользовательском представлении или кнопке панели изображений, сделайте эти слова частью пользовательского представления или изображения.

Другие вопросы по тегам