rightBarButtonItem图像没有显示

问题描述:

任何人都可以帮我理解我的代码中有什么问题。我没有得到它我的代码编译罚款没有任何错误,但我的形象没有显示出来。我相信我的图像存在于资产文件夹文件夹,我也给我的图像的正确名称以及。我正在编程。下面是我的代码 - :rightBarButtonItem图像没有显示

* 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(),forBarMatrics: .default) 
    } 

扩展文件 - :

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") 
    } 

} 

控制器讲座:

class HomeController: UICollectionViewController,UICollectionViewDelegateFlowLayout { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     setUpLayout() 
     setUpMenuBar() 
     fetchJsonData() 
     navigationController?.searchBarButton() 
    } 

我已经通过测试断点来检查我的函数是否被调用。它工作正常,但图像不显示请帮助。

尽量让UIViewController中,而不是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") 
    } 

} 

现在调用此方法从`viewDidLoad``

class HomeController: UICollectionViewController,UICollectionViewDelegateFlowLayout { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     setUpLayout() 
     setUpMenuBar() 
     fetchJsonData() 
     self.searchBarButton() 
    } 
+0

@Nirva d由于它的工作。但为什么扩展UINavigationController不工作? –

+1

完美谢谢。:) –