Ios 在Swift中的导航栏中设置图像
我正试图在我的整个应用程序的导航栏右侧放置一个图标。除了主屏幕(尽管在那里也可以,因为我将它隐藏在视图控制器上):顶部的表视图控制器,以及下面图像最右侧的地图视图和表视图控制器 这段代码神秘地在一个视图控制器(收藏夹视图控制器,左上角)的导航栏中央设置图标,该视图控制器是一个tableview控制器,与嵌入在导航控制器中的UIViewController分离:Ios 在Swift中的导航栏中设置图像,ios,swift,xcode,uiimage,uinavigationbar,Ios,Swift,Xcode,Uiimage,Uinavigationbar,我正试图在我的整个应用程序的导航栏右侧放置一个图标。除了主屏幕(尽管在那里也可以,因为我将它隐藏在视图控制器上):顶部的表视图控制器,以及下面图像最右侧的地图视图和表视图控制器 这段代码神秘地在一个视图控制器(收藏夹视图控制器,左上角)的导航栏中央设置图标,该视图控制器是一个tableview控制器,与嵌入在导航控制器中的UIViewController分离: let yelpIcon = UIBarButtonItem(image: UIImage(named: "Yelp_trademark
let yelpIcon = UIBarButtonItem(image: UIImage(named: "Yelp_trademark_RGB_outline"), style: .plain, target: self, action: nil)
self.navigationController!.navigationItem.rightBarButtonItem = yelpIcon
My Map和TableViewController(最右侧)嵌入在导航控制器中,每个导航控制器都嵌入在选项卡栏控制器中。我无法通过在Interface Builder中创建导航项并设置其图像,或者通过编程方式来显示图像
强烈建议在SO上使用此代码,但在我尝试时没有结果(我将action设置为nil,因为我不需要它来执行任何操作):
注意:导航栏是用黑色BartinColor设计的,这不会有什么不同,但我想我会和大家分享。图像是“我的资源”文件夹中的PNG。在使用debug视图层次结构时,我遇到了这两个层,它们似乎阻止了我的图像出现(尽管它们不使用back按钮)
实例地址0x7FA8B7B10A0是UIVisualEffect子视图。我不确定这是否是问题所在,但我也不知道如何关闭它。我已将导航控制器上的导航栏中的视图着色颜色(嵌入其中)更改为透明,并关闭了不透明度。两者都不起作用
如何使导航栏右侧的图像显示?请找到以下解决方案 像这样创建UIViewController的扩展和方法
extension UIViewController {
func setNavigationItem() {
let imageView = UIImageView(image: UIImage(named: "yelp"))
let item = UIBarButtonItem(customView: imageView)
self.navigationItem.rightBarButtonItem = item
}
}
对于要在其中显示rightBarButton项的ViewController,在viewDidLoad()
方法中,添加以下行:
override func viewDidLoad() {
super.viewDidLoad()
self.setNavigationItem()
}
请移除UIDABBARCONTROLLER的内部UINavigationController,初始UINavigationController将处理整个应用程序中的所有导航
如果有任何疑问,请告诉我。请找到以下解决方案 像这样创建UIViewController的扩展和方法
extension UIViewController {
func setNavigationItem() {
let imageView = UIImageView(image: UIImage(named: "yelp"))
let item = UIBarButtonItem(customView: imageView)
self.navigationItem.rightBarButtonItem = item
}
}
对于要在其中显示rightBarButton项的ViewController,在viewDidLoad()
方法中,添加以下行:
override func viewDidLoad() {
super.viewDidLoad()
self.setNavigationItem()
}
请移除UIDABBARCONTROLLER的内部UINavigationController,初始UINavigationController将处理整个应用程序中的所有导航
如果有任何疑问,请告诉我。您好,您可以指定在哪个iOS上运行此操作,以及使用哪个swift版本吗。还要告诉您希望图标显示哪些
UIViewControllers
。另一个是你不应该在self.navigationController
的navigationItem
上设置它,而是在UIViewController
的navigationItem
上设置它。模拟器版本10,Swift 4,iOS 11.1,XCode 9.2Did你是指iPhone X,iOS 11.1和XCode 9.2还是什么?没有Swift 11.1是的,我马上纠正了。请刷新我也编辑了我的初始评论。你能回答我添加了哪些吗?嗨,你能指定你在哪个iOS上运行这个,以及你使用的是哪个swift版本吗。还要告诉您希望图标显示哪些UIViewControllers
。另一个是你不应该在self.navigationController
的navigationItem
上设置它,而是在UIViewController
的navigationItem
上设置它。模拟器版本10,Swift 4,iOS 11.1,XCode 9.2Did你是指iPhone X,iOS 11.1和XCode 9.2还是什么?没有Swift 11.1是的,我马上纠正了。请刷新我也编辑了我的初始评论。你能回答我添加的内容吗?嗯。我似乎没有看到任何内容?@Pigpocket你能分享你的代码吗?希望每个视图控制器都是UINavigationControllerSure的子对象,但具体如何呢?我的代码与您的代码完全相同,除了这一行之外,我需要调用类型:let item=uibarbuttonite(image:UIImage(名为:“Yelp_商标_RGB_大纲”)你能调试并确认方法是否调用了吗?或者你是否得到了项或notLet。嗯。我似乎什么都没有出现?@Pigpocket你能分享你的代码吗?希望每个ViewController都是uinavigationControllerSuite的孩子,但具体如何?我的代码和你的完全一样,除了这一行,我需要调用类型:let item=UIBarButtonItem(图像:UIImage(名为:“Yelp_商标_RGB_大纲”)您能否调试并确认方法是否调用?或者您是否正在获取item或notLet。