Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中的导航栏中设置图像_Ios_Swift_Xcode_Uiimage_Uinavigationbar - Fatal编程技术网

Ios 在Swift中的导航栏中设置图像

Ios 在Swift中的导航栏中设置图像,ios,swift,xcode,uiimage,uinavigationbar,Ios,Swift,Xcode,Uiimage,Uinavigationbar,我正试图在我的整个应用程序的导航栏右侧放置一个图标。除了主屏幕(尽管在那里也可以,因为我将它隐藏在视图控制器上):顶部的表视图控制器,以及下面图像最右侧的地图视图和表视图控制器 这段代码神秘地在一个视图控制器(收藏夹视图控制器,左上角)的导航栏中央设置图标,该视图控制器是一个tableview控制器,与嵌入在导航控制器中的UIViewController分离: let yelpIcon = UIBarButtonItem(image: UIImage(named: "Yelp_trademark

我正试图在我的整个应用程序的导航栏右侧放置一个图标。除了主屏幕(尽管在那里也可以,因为我将它隐藏在视图控制器上):顶部的表视图控制器,以及下面图像最右侧的地图视图和表视图控制器

这段代码神秘地在一个视图控制器(收藏夹视图控制器,左上角)的导航栏中央设置图标,该视图控制器是一个tableview控制器,与嵌入在导航控制器中的UIViewController分离:

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。