在与segue一起显示的导航栏上以编程方式设置的图像集

时间:2017-09-09 09:55:32

标签: ios swift uinavigationbar segue

我已经在编程上像我这样在导航栏上设置了一个图像...

let myView = UIView(frame: CGRect(x: 315, y: 12, width: 20,height: 20))
myView.backgroundColor = UIColor.clear

let img = "homeIcon"
let image = UIImage(named: img)
let imageView = UIImageView(image: image!)
imageView.frame = CGRect(x:1, y: -1, width:20, height: 20)
myView.addSubview(imageView)


self.navigationController?.navigationBar.addSubview(myView)

我在这里做的是创建视图,向视图添加图像,然后将视图添加到导航栏。但问题是,当我点击该行并使用segue从该屏幕导航到另一个屏幕时,下一个屏幕的导航栏也会显示我在上一个屏幕上设置的图标。但我不希望这种情况发生。下一个屏幕不应显示导航栏上的图标。那应该怎么办?

1 个答案:

答案 0 :(得分:0)

在您呈现的视图控制器中尝试此操作:

override func viewWillAppear(_ animated: Bool) {
  for view in (self.navigationController?.navigationBar.subviews)! {
    if view.tag == 1 {
      view.removeFromSuperview()
    }
  }
}    

并在viewWillAppear中添加用于在初始控制器中设置导航栏图像的代码,确保将包含图像视图的视图的标记设置为1.

我希望它有所帮助。