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()
}
@Nirva d由于它的工作。但为什么扩展UINavigationController不工作? –
完美谢谢。:) –