JSQ 消息视图控制器:在导航栏上添加 "Back" 按钮和图像,Swift

JSQmessageView Controller: Add "Back" Button & Image on Navigation Bar, Swift

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

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

    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)

}

因此,如果您使用导航控制器来呈现 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)
 }

如果您有更多问题,请告诉我,我会尽力而为。祝你好运