ios - 无法更改右侧导航按钮标题

标签 ios swift uibarbuttonitem

我在 .viewWillAppear 中设置了一个右侧导航按钮,如下所示类 ChatMessageViewController..

let button2 = UIBarButtonItem(image: nil, style: .plain, target: self, action: #selector(blockPressed(sender:)))
button2.title = "Block"
self.navigationItem.rightBarButtonItem = button2

现在,点击 blockPressed 另一个共享函数就会像这样被调用......

@objc fileprivate func blockPressed(sender: UIButton) {
    XMPPConfig.shared.blockUser(userJID: theUserJID!) //XMPPConfig is another class having some common functions and delegate methods.

  }

(这个函数基本上会阻止某个用户,就像阻止 Whatsapp 用户一样。一旦发生阻止,就会调用某些委托(delegate)方法。在我更改 Block 按钮之后,这样的委托(delegate)方法如下所示。 .)

func xmppBlocking(_ sender: XMPPBlocking!, didBlockJID xmppJID: XMPPJID!) {
    print("successfully blocked!")

    ChatMessageViewController.shared.setupUnBlock()

  }

这样做也可以正确调用 ChatMessageViewController 中的 setupUnBlock() 函数,如下所示...

func setupUnBlock() {

    if XMPPConfig.shared.sectionGroupsFlag == false {
      let button2 = UIBarButtonItem(image: nil, style: .plain, target: self, action: #selector(unblockPressed(sender:)))
      button2.title = "Unblock"
      self.navigationItem.rightBarButtonItem = button2
    }
  }

但是按钮标题仍然保持不变......即它仍然是“阻止”..这可能是什么原因......?

最佳答案

您应该使用另一个初始化程序来初始化您的UINavigationBarButton:

let right = UIBarButtonItem(title: "Some title", style: .plain, target: self, action: #selector(rightNavBarButtonPressed))

您正在使用 UIBarButtonItem(image:...

关于ios - 无法更改右侧导航按钮标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817149/

相关文章:

swift - 为什么我的简单日期计算在 Swift 3.1 中有时会失败?

ios - 尝试在 View 不在窗口中的 UIAlertController 上呈现 OTPViewController

iphone - 如何在 UIToolbar 上拥有多行项目?

ios - 带有自定义 UIButton 的 UIBarButtonItem 在 iOS <= 10 上不可见

swift - MMM dd, yyyy hh :mm:ss a? 的正确日期格式是什么以及如何转换为 dd-mm-yyyy HH:ii

iphone - UIbarbuttonItem 标题的自定义字体

xcode - 如何在 Xcode 中排除模拟器构建中的框架

ios - itunesconnect 应用程序 - 恢复到以前的版本

iphone - 无法设置 UIButton 的标题

ios - 使用 CIImage- Swift 的二维码生成器