2017-07-24 1 views
0

Dans Swift 3, j'ai créé par programmation une barre d'outils (en bas) avec des boutons personnalisés séparés par une entretoise flexible pour séparer les boutons personnalisés, en poussant un ("Précédent") vers le bord gauche et l'autre ("Suivant") vers le bord droit de la vue. Mais je n'ai pas réussi à afficher les titres des boutons ("Précédent" et "Suivant"). Conseillez-moi, s'il-vous-plaît. Merci. Voici mon code:Pourquoi les titres des boutons de la barre d'outils créés par programmation (en bas) ne s'affichent-ils pas?

En premier lieu, la déclaration de classe et quelques variables:

class TextsController: UIViewController,UIGestureRecognizerDelegate { 

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

Ensuite, dans le 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 

Répondre

0

Voici comment j'ai résolu cela.

J'ai éliminé les deux instructions essayant d'assigner un titre à chaque bouton (je me demande pourquoi Xcode ne l'a pas marqué, me permettant d'assigner un titre à chacun initialement mais aucun titre ne s'affichera).

Je réécris (comparer le code ci-dessous avec le code dans la question) les UIBarButtonItems comme suit pour inclure maintenant deux éléments de texte:

// 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)) 

Je tout en annexe, y compris les deux nouveaux éléments de texte, à la tableau:

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

Cette place efficacement « Précédent » à côté du bouton pointant vers la gauche et « Suivant » à côté du bouton pointant vers la droite, avec l'entretoise souple offrant une belle écart entre les deux.

0

bouton vue personnalisée ou la barre d'image élément n'a pas de titre . Un élément de barre est soit un titre ou une vue personnalisée ou une image. Si vous souhaitez que certains mots apparaissent dans une vue personnalisée ou un élément de bouton de barre d'image, intégrez ces mots à la vue ou à l'image personnalisée.

+0

En imaginant une image avec un titre en dessous, vous pouvez confondre un UIBarButtonItem avec un UITabBarItem. – matt

+0

Merci pour votre réponse. Mais j'ai l'intention de faire en sorte que le texte (ce que j'ai appelé "title") change dynamiquement, en fonction du texte actuellement affiché dans WKWebView. Par exemple, si je suis actuellement sur la page 2, je veux que le bouton triangleLeft affiche "1" et le bouton triangleRight pour afficher "3" (j'ai simplement utilisé "Previous" et "Next" comme espaces réservés provisoires plus tard). J'ajouterai plus tard des fonctionnalités pour que ces boutons invoquent la page 1 ou la page 3 sur WKWebView. Donc, faire partie des mots souhaités de l'image personnalisée n'aide pas. – WilliamP

+0

Allez-y et "l'intention" que. Mais ce n'est pas ce qu'un UIBarButtonItem _is_. La réalité survient. – matt