我在proxyTable: {
"/api/": {
target: "https://rest.service/api/",
changeOrigin: true,
secure: false,
logLevel: 'debug',
onError: function (err, req, res) {
console.log(res, req, err)
}
},
中设置了一个右侧导航按钮。类viewWillAppear
..
ChatMessageViewController
现在,点击let button2 = UIBarButtonItem(image: nil, style: .plain, target: self, action: #selector(blockPressed(sender:)))
button2.title = "Block"
self.navigationItem.rightBarButtonItem = button2
时,另一个共享函数被称为...
blockPressed
(此功能基本上像阻止whatsapp用户一样阻止特定的用户。一旦发生阻止,就会调用某些委托方法。在我更改@objc fileprivate func blockPressed(sender: UIButton) {
XMPPConfig.shared.blockUser(userJID: theUserJID!) //XMPPConfig is another class having some common functions and delegate methods.
}
按钮之后,这样的委托方法如下。) / p>
Block
这样做还可以像这样...正确地调用func xmppBlocking(_ sender: XMPPBlocking!, didBlockJID xmppJID: XMPPJID!) {
print("successfully blocked!")
ChatMessageViewController.shared.setupUnBlock()
}
中的setupUnBlock()
函数...
ChatMessageViewController
但是按钮标题仍然保持不变...它仍然是“阻止” ..这可能是什么原因...?
答案 0 :(得分:0)
您应该使用其他初始化程序初始化UINavigationBarButton
:
let right = UIBarButtonItem(title: "Some title", style: .plain, target: self, action: #selector(rightNavBarButtonPressed))
您使用的是UIBarButtonItem(image:...
。
答案 1 :(得分:0)
我试图复制您的代码,显然一切正常。
据我所知,该问题可能是由于三个可能的问题引起的。
这可能是线程问题。除非您没有在xcode中打开线程检查器,否则这是不正确的。但是在unblock和block代码中,输入
print(Thread.current) 要查看设置rightbarButton的两个代码块在主线程中。如果没有,您应该知道如何解决它们。
这可能是视图更新问题,仍然不太可能,但是值得一试。.因此,在要添加rightBarButton的代码块中,再添加一行代码。
self.navigationController?.viewIfLoaded?.setNeedsLayout()
可以更新navigationController的视图。
调试起来很容易,您只需在每个代码块中放置一条语句,以查看它们是否一起出现。