在导航栏中设置图像 Swift
Set Image In Navigation Bar In Swift
我试图在整个应用程序的导航栏右侧 放置一个图标。除了主屏幕外,它无处不在(尽管在那里也很好,因为我将它隐藏在那个视图控制器上):顶部的 table 视图控制器,以及地图视图和 table 视图下图最右侧的控制器。
这段代码神秘地用于在一个视图控制器(收藏夹视图控制器,左上角)的导航栏 中心 设置图标,这是一个 table视图控制器,从嵌入在导航控制器中的 UIViewController 中分离出来:
let yelpIcon = UIBarButtonItem(image: UIImage(named: "Yelp_trademark_RGB_outline"), style: .plain, target: self, action: nil)
self.navigationController!.navigationItem.rightBarButtonItem = yelpIcon
我的地图和 TableViewControllers(最右边)嵌入在导航控制器中,每个导航控制器都嵌入在标签栏控制器中。我无法通过在 Interface Builder 中创建导航项并设置其图像或以编程方式显示图像。
这段代码在 SO 上被高度推荐,但是当我尝试它时没有结果(我将操作设置为 nil,因为我不需要它做任何事情):
let button1 = UIBarButtonItem(image: UIImage(named: "myimage"), style: .plain, target: self, action: Selector("action"))
self.navigationItem.rightBarButtonItem = button1
注意:导航栏采用黑色 barTintColor 风格化,这应该没什么区别,但我想我会分享。图像是我的资产文件夹中的 PNG。在使用调试视图层次结构时,我遇到了这两个层,它们似乎阻止了我的图像出现(尽管它们不使用后退按钮执行此操作)。
实例地址0x7fa8b7b10aa0是一个UIVisualEffectSubView。我不确定这是否是问题所在,但我也不知道如何关闭它。我已经将嵌入导航控制器的导航栏中的视图色调颜色更改为透明,并关闭了不透明度。都没有用。
如何让我的导航栏右侧的图像出现?
请找到以下解决方案。
像这样创建 UI 的扩展ViewController 和方法,
extension UIViewController {
func setNavigationItem() {
let imageView = UIImageView(image: UIImage(named: "yelp"))
let item = UIBarButtonItem(customView: imageView)
self.navigationItem.rightBarButtonItem = item
}
}
对于那些 ViewController,您想要在其中显示 rightBarButton 项,在 viewDidLoad()
方法中,添加以下行,
override func viewDidLoad() {
super.viewDidLoad()
self.setNavigationItem()
}
请删除 UITabbarController 中的 UINavigationController,初始 UINavigationController 将处理整个应用程序的所有导航。
如有任何疑问,请告诉我。
我试图在整个应用程序的导航栏右侧 放置一个图标。除了主屏幕外,它无处不在(尽管在那里也很好,因为我将它隐藏在那个视图控制器上):顶部的 table 视图控制器,以及地图视图和 table 视图下图最右侧的控制器。
这段代码神秘地用于在一个视图控制器(收藏夹视图控制器,左上角)的导航栏 中心 设置图标,这是一个 table视图控制器,从嵌入在导航控制器中的 UIViewController 中分离出来:
let yelpIcon = UIBarButtonItem(image: UIImage(named: "Yelp_trademark_RGB_outline"), style: .plain, target: self, action: nil)
self.navigationController!.navigationItem.rightBarButtonItem = yelpIcon
我的地图和 TableViewControllers(最右边)嵌入在导航控制器中,每个导航控制器都嵌入在标签栏控制器中。我无法通过在 Interface Builder 中创建导航项并设置其图像或以编程方式显示图像。
这段代码在 SO 上被高度推荐,但是当我尝试它时没有结果(我将操作设置为 nil,因为我不需要它做任何事情):
let button1 = UIBarButtonItem(image: UIImage(named: "myimage"), style: .plain, target: self, action: Selector("action"))
self.navigationItem.rightBarButtonItem = button1
注意:导航栏采用黑色 barTintColor 风格化,这应该没什么区别,但我想我会分享。图像是我的资产文件夹中的 PNG。在使用调试视图层次结构时,我遇到了这两个层,它们似乎阻止了我的图像出现(尽管它们不使用后退按钮执行此操作)。
实例地址0x7fa8b7b10aa0是一个UIVisualEffectSubView。我不确定这是否是问题所在,但我也不知道如何关闭它。我已经将嵌入导航控制器的导航栏中的视图色调颜色更改为透明,并关闭了不透明度。都没有用。
如何让我的导航栏右侧的图像出现?
请找到以下解决方案。
像这样创建 UI 的扩展ViewController 和方法,
extension UIViewController {
func setNavigationItem() {
let imageView = UIImageView(image: UIImage(named: "yelp"))
let item = UIBarButtonItem(customView: imageView)
self.navigationItem.rightBarButtonItem = item
}
}
对于那些 ViewController,您想要在其中显示 rightBarButton 项,在 viewDidLoad()
方法中,添加以下行,
override func viewDidLoad() {
super.viewDidLoad()
self.setNavigationItem()
}
请删除 UITabbarController 中的 UINavigationController,初始 UINavigationController 将处理整个应用程序的所有导航。
如有任何疑问,请告诉我。