【问题标题】:Bar Button Item fails to perform action Swift条形按钮项无法执行动作 Swift
【发布时间】:2017-12-27 08:29:52
【问题描述】:

我有一个导航栏(不是导航控制器导航栏)。在左侧,我拖动了一个 Bar Button Item 并使用 IBActon 将其连接到我的视图控制器。动作执行:

navigationController?.popViewController(animated: true).

同样,我有一个嵌入到层次结构中的导航控制器,但我隐藏了导航控制器导航栏并使用我自己的。我不确定这是否与它有关。但是 Bar Button Items 操作并未始终如一地执行。有时当我点击它时,视图会弹出(删除),而其他时候根本没有任何反应。如果有人经历过这一点并有任何见解,我将不胜感激!

相关代码:

 @IBAction func backTapped(_ sender: Any) {
    navigationController?.popViewController(animated: true)
}

【问题讨论】:

  • 为此添加相关代码。
  • 条形按钮的框架是什么?条形按钮有一个常见的陷阱,有时它们太小而无法点击。特别是如果您正在使用设备。
  • 添加调试点并检查方法调用与否?
  • 我没有明确设置条形按钮的框架,只需将其拖放到情节提要上的适当位置即可。我不认为这是一个大小问题,因为无论是否执行操作,我都没有看到触摸寄存器。我附加到按钮的唯一代码已编辑到我的问题中。感谢您的回复!
  • @KKRocks 如何添加调试点?像断点一样?

标签: ios swift user-interface button uibarbuttonitem


【解决方案1】:

所以我发现了问题。这是我在视图控制器之间切换的方式。导航到我正在使用的应用程序

let storyboard = UIStoryboard(name: "Settings", bundle: nil)
    let viewControllerSettings = storyboard.instantiateViewController(withIdentifier: "SettingsID") as! SettingsViewController
    self.show(viewControllerSettings, sender: self)

然而,这就是问题所在。要正确导航到新的故事板,同时保持与该故事板中导航控制器的连接,您必须转到导航控制器本身。所以它应该像这样执行:

let storyboard = UIStoryboard(name: "Settings", bundle: nil)
    let viewControllerSettings = storyboard.instantiateViewController(withIdentifier: "SettingsNavControllerID") as! UINavigationController
    self.show(viewControllerSettings, sender: self)

通过这种方式,我们在故事板中的导航控制器中添加了一个故事板ID,您可以继续浏览它。如果不通过导航控制器,您将无法执行

navigationController?.popViewController(animated: true).

因为导航控制器没有正确加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多