JSQ 消息视图控制器:在导航栏上添加“返回”按钮和图像,Swift

Posted

技术标签:

【中文标题】JSQ 消息视图控制器:在导航栏上添加“返回”按钮和图像,Swift【英文标题】:JSQmessageView Controller: Add "Back" Button & Image on Navigation Bar, Swift 【发布时间】:2016-10-25 02:07:11 【问题描述】:

我正在使用 JSQmessageViewController 并尝试以编程方式在导航栏上添加“返回”按钮和用户图像。我正在使用以下代码。运行后,没有“返回”按钮或图像。附上模拟器截图。我用普通的 UIViewController 测试了这些代码,它们工作正常。

我可以知道他们为什么不使用 JSQmessageViewController 吗?我应该怎么做才能在导航栏上添加“返回”按钮和图像?非常感谢!

    let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 64))

    navigationBar.backgroundColor = UIColor.whiteColor()
    navigationBar.delegate = self;


    let navigationItem = UINavigationItem()
    navigationItem.title = strValue

    let leftButton =  UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "back:")
    self.navigationItem.leftBarButtonItem = leftButton

    let imgButton = UIButton()

    imgButton.setImage(image, forState: .Normal)
    imgButton.addTarget(self, action: "EditProfile:", forControlEvents: UIControlEvents.TouchDown)
    imgButton.frame = CGRectMake(self.view.frame.width - 60, 0, 41, self.view.frame.height)

    var rightButton = UIBarButtonItem(customView: imgButton)

    self.navigationItem.rightBarButtonItem = rightButton


    navigationBar.items = [navigationItem]

    self.view.addSubview(navigationBar)

【问题讨论】:

我没有看到所附的屏幕截图。 【参考方案1】:

因此,如果您使用导航控制器来显示JSQMessagesViewController 的实例化,那么导航栏实际上应该已经存在。您只需为它提供这些按钮,它们就会在正确的位置。看起来您可能正在以过时的语法做事。这是最新的语法。

创建一个函数来添加您的后退按钮。

func addCancelButtonLeft() 
    let button = UIBarButtonItem(barButtonSystemItem: .back, target: self, action: #selector(dismissView))
    navigationItem.leftBarButtonItem = button

为按钮创建动作。

func dismissView() 
    dismiss(animated: true, completion: nil)

然后对于您的图像,您实际上是在尝试在该标题视图中放置一个按钮。这很好。

func titleView() 
  let imgButton = UIButton()

  imgButton.setImage(image, forState: .Normal)
  imgButton.addTarget(self, action: #selector(EditProfile), forControlEvents: .touchUpInside)
  navigationItem.titleView = imgButton

 func EditProfile() 
     navigationController?.present(EditProfileViewController(), animated: true, completion: nil)
 

如果您有更多问题,请告诉我,我会看看我能做些什么。祝你好运??

【讨论】:

非常感谢您提供详细的代码和帮助。将尝试它们并进一步学习。 :)

以上是关于JSQ 消息视图控制器:在导航栏上添加“返回”按钮和图像,Swift的主要内容,如果未能解决你的问题,请参考以下文章

使用swift在选项卡式视图中的导航栏上添加按钮

如何在导航栏上添加UIView?

如何更改导航栏上“返回”按钮的标题

导航栏上没有后退按钮

导航栏上的 iOS::Button 仅出现在根视图控制器上

使用左栏按钮在导航栏上滑动返回手势