L'image rightBarButtonItem ne s'affiche pas

Quelqu'un peut-il m'aider à comprendre ce qui ne va pas dans mon code. Je ne comprends pas mon code comstack bien sans aucune erreur mais mon image ne s'affiche pas. Je suis sûr que mon image est présente dans le dossier Assests et je donne aussi le nom correct de mes images. Je le fais par programme. Voici mon code-:

* AppDelegate-:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. windowLayout() application.statusBarStyle = .lightContent return true } func windowLayout() { window = UIWindow(frame: UIScreen.main.bounds) window?.makeKeyAndVisible() let layout = UICollectionViewFlowLayout() window?.rootViewController = UINavigationController(rootViewController: HomeController(collectionViewLayout: layout)) UINavigationBar.appearance().barTintColor = UIColor(colorLiteralRed: 238/255, green: 32/255, blue: 31/255, alpha: 1) let statusBarView = UIView() statusBarView.backgroundColor = UIColor(colorLiteralRed: 194/255, green: 31/255, blue: 31/255, alpha: 1) window?.addSubview(statusBarView) window?.translatesAutoresizingMaskIntoConstraints = false //window?.addConstraintsWithFormat(format: "H:|[v0]|", views: statusBarView) //window?.addConstraintsWithFormat(format: "V:|[v0(20)]", views: statusBarView) UINavigationBar.appearance().shadowImage = UIImage() //UINavigationBar.appearance().setBackgroundImage(UIImage(),forBarMasortingcs: .default) } 

Fichier d'extension:

 import UIKit protocol navigationBarItems { func searchBarButton() func handleMoreButton() } extension UINavigationController:navigationBarItems { func handleMoreButton() { } func searchBarButton() { let searchBarImage = UIImage(named: "search-icon")?.withRenderingMode(UIImageRenderingMode.alwaysTemplate) let searchImage = UIBarButtonItem(image: searchBarImage, style: UIBarButtonItemStyle.done, target: self, action: #selector(handleSearch)) navigationItem.rightBarButtonItem = searchImage } func handleSearch() { print("123") } } 

Classe de controller:

 class HomeController: UICollectionViewController,UICollectionViewDelegateFlowLayout { override func viewDidLoad() { super.viewDidLoad() setUpLayout() setUpMenuBar() fetchJsonData() navigationController?.searchBarButton() } 

J'ai testé en mettant en place un point d'arrêt pour vérifier ma fonction est appelée ou non. Et cela fonctionne bien mais l'image ne s'affiche pas s'il vous plaît aider.

Essayez de faire l'extension de UIViewController au lieu de UINavigationController

 extension UIViewController:navigationBarItems { func handleMoreButton() { } func searchBarButton() { let searchBarImage = UIImage(named: "search-icon")?.withRenderingMode(UIImageRenderingMode.alwaysTemplate) let searchImage = UIBarButtonItem(image: searchBarImage, style: UIBarButtonItemStyle.done, target: self, action: #selector(handleSearch)) navigationItem.rightBarButtonItem = searchImage } func handleSearch() { print("123") } } 

Appelez maintenant cette méthode à partir de `viewDidLoad“

 class HomeController: UICollectionViewController,UICollectionViewDelegateFlowLayout { override func viewDidLoad() { super.viewDidLoad() setUpLayout() setUpMenuBar() fetchJsonData() self.searchBarButton() }