首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rightBarButtonItem图像未显示

rightBarButtonItem图像未显示
EN

Stack Overflow用户
提问于 2017-04-12 09:38:33
回答 1查看 401关注 0票数 1

有人能帮我弄明白我的代码有什么问题吗?我没有得到它,我的代码编译得很好,没有任何错误,但是我的图像没有显示出来,我确信我的图像存在于Assests文件夹中,并且我也给出了我的图像的正确名称。我是用程序来做的。下面是我的代码-:

*AppDelegate-:

代码语言:javascript
复制
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)
    }

扩展文件-:

代码语言:javascript
复制
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")
    }

}

控制器类-:

代码语言:javascript
复制
class HomeController: UICollectionViewController,UICollectionViewDelegateFlowLayout {

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

我已经通过设置一个断点来测试我的函数是否被调用了。而且它的工作很好,但图像没有出现,请帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-12 09:56:57

尝试对UIViewController进行扩展而不是UINavigationController

代码语言:javascript
复制
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调用此方法

代码语言:javascript
复制
class HomeController: UICollectionViewController,UICollectionViewDelegateFlowLayout {

    override func viewDidLoad() {
        super.viewDidLoad()
        setUpLayout()
        setUpMenuBar()
        fetchJsonData()
        self.searchBarButton()
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43365833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档