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)
}
如果您有更多问题,请告诉我,我会尽力而为。祝你好运
我正在使用 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)
}
如果您有更多问题,请告诉我,我会尽力而为。祝你好运