Pickerview avec une image ou texte unicode

Bonjour suite à la mise à jour Xcode en 12.4, j’ai dans un pickerview une image unicode qui ne s’affiche plus. ci joint l’image de l’écran avant et le code de la page concernée et qui permettait d’afficher cette image. si quelqu’un a une idée je suis preneur (l’unicode peut être remplacé par une image). merci

    import UIKit

class SIBViewControllerMenuGeneral: UIViewController {
    
    
    @IBOutlet weak var pickerViewGuide: UIPickerView!

    var selectedIndex = 0
    
    var menus:[PFMenuGeneral] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.pickerViewGuide.delegate = self as! UIPickerViewDelegate // EVENEMENT COMPLEXE D'INTERACTION
        self.pickerViewGuide.dataSource = self as! UIPickerViewDataSource// EVENEMENT COMPLEXE DE TYPE DONNEES
        // recupération des informations du menu general
        PFMenuGeneral.getAllMenuGeneral { (succed, menusReceive) in
            print(menusReceive)
            self.menus = menusReceive!
            selectedMenuGeneral = self.menus.first
            self.pickerViewGuide.reloadAllComponents()
        }
        // Do any additional setup after loading the view.
    }

}

// CREATION D4UNE EXTENSION POUR BIEN ISOLER LES FONCTION D'UN DELEGATE
extension SIBViewControllerMenuGeneral: UIPickerViewDelegate, UIPickerViewDataSource{
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
  
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
       return menus.count
    }
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        var titlePicker = menus[row].nom!
        
        
            return titlePicker

    }
    
    //
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        let title = menus[row].nom
        print(title)
        
        selectedMenuGeneral = nil
        selectedPageVente = nil
        selectedIndex = row
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierDecouverte && moduleDecouverteIsUnlock == false) {
            selectedPageVente = menus[row].pointerPageVente
        }
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierCulture && moduleCultureIsUnlock == false) {
            selectedPageVente = menus[row].pointerPageVente
        }
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierSport && moduleSportIsUnlock == false) {
            selectedPageVente = menus[row].pointerPageVente
        }
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierNature && moduleNatureIsUnlock == false) {
            selectedPageVente = menus[row].pointerPageVente
        }
            selectedMenuGeneral = menus[row]
    }
    
    func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
        
        var titleData = menus[row].nom!
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierDecouverte && moduleDecouverteIsUnlock == false) {
            titleData += " \u{1F512}"
        }
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierCulture && moduleCultureIsUnlock == false) {
            titleData += " \u{1F512}" 
        }
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierSport && moduleSportIsUnlock == false) {
            titleData  += " \u{1F512}"
        }
        if (menus[row].pointerPageVente?.iapIdentifier == iapIdentifierNature && moduleNatureIsUnlock == false) {
            titleData += " \u{1F512}"
        }
        
        let  myTitle = NSAttributedString(string: titleData, attributes: [NSAttributedStringKey.font:UIFont(name: "Georgia", size: 20.0)!,NSAttributedStringKey.foregroundColor:UIColor.white])
        
         return myTitle
    }
    
    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        
         var titleData = menus[row].nom!
         let pickerLabel = UILabel(reuseIdentifier: titleData)
        if UIDevice.current.userInterfaceIdiom == .pad {
            pickerLabel.font = UIFont.systemFont(ofSize: 35)
            pickerLabel.textColor = .white
            pickerLabel.textAlignment = .center
            pickerLabel.text = titleData
        } else if UIDevice.current.userInterfaceIdiom == .phone {
           pickerLabel.font = UIFont.systemFont(ofSize: 20)
            pickerLabel.textColor = .white
            pickerLabel.textAlignment = .center
            pickerLabel.text = titleData
        }
        return pickerLabel
    }

}

Je suis étonné de ton delegate, tu as implémenté les 3 versions de la fonction de création de cellule : celle avec un texte basique, celle avec un texte avec attributs et enfin celle avec la vue entière.
Tu es censé en choisir une seule des 3 sinon tu ne sais pas quelle version sera appelée.

Je crois que si tu ajoutes les 3, il va d’abord tester celui avec la vue, puis si il n’obtient rien de bon, il passe sur celle avec attributs et enfin sur celle avec le texte basique.

Visiblement celle qui t’intéresse est celle avec le texte avec attributs qui contient ton unicode. J’aurais donc commenté les autres.
Si la création de la vue de taille différente sur iPad et iPhone est importante pour toi, alors il faut ajouter ton unicode dans cette fonction car celle qui se situe plus haut sera probablement ignorée

merci de ton retour.
je ne comprends pas pourquoi il l’ignore en demandant une taille suivant le device

Tu as essayé de ne garder que la version qui contient le texte avec attributs et d’enlever les 2 autres fonctions ?

Hello, j’ai supprimé la seconde fonction et j’ai mis les élements dans la dernière, cela fonctionne maintenant. Mais j’ai toujours pas compris pourquoi cela fonctionait correctement jusqu’à la dernière version d’Xcode et ta remarque sur la taille du device.

Ensuite on peut faire des suppositions, mais dans l’idée l’API n’a pas été conçue pour que tu utilises les 3 à la fois puisque chacune d’entre elles répond à la même question.
En interne ils peuvent faire des changements avec les dernières versions de iOS mais ils respectent le principe de départ : de garantir que celle que tu as choisi sera appelée. Si tu en choisis 3, rien ne dit ce qui va se passer exactement et tu peux donc avoir des bugs comme celui-ci.

Hello,

Un peu hors sujet, mais envoyant ton code, je voulais juste te donner un petit conseil. Tu utilises beaucoup les force unwrap (!) pour les optionnelles. Je te conseille de prendre tout de suite la bonne habitude de les déballer via un guard par exemple.

Même si c’est simplement un exercice, c’est une bonne habitude à prendre.