【问题标题】:Swift 4 back button doesn't appearSwift 4后退按钮没有出现
【发布时间】:2018-07-04 08:18:04
【问题描述】:

我有问题...我有两个 ViewController,我使用此代码从第一个 VC 传递到第二个

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let newViewController = storyBoard.instantiateViewController(withIdentifier: "EVSignInViewController") as! EVSignInViewController
    self.present(newViewController, animated: true, completion: nil)

问题是.. 我想在第二个 VC 上显示后退按钮。我已经尝试在第一个 VC 上使用编辑器->嵌入->导航控制器。我也用这个

navigationController?.setNavigationBarHidden(false, animated: true)
navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil)

【问题讨论】:

  • 第一个 VC 是否封装在导航控制器中?
  • @Scriptable 是的。看,我想在没有连接情节提要上的视图的情况下创建后退动作。有可能吗?

标签: swift uinavigationcontroller navigation uinavigationbar


【解决方案1】:

Presenting ViewController 将以模态方式将其呈现在您当前的顶部之上。它实际上并没有将其推送到导航控制器导航堆栈上。

你需要push视图控制器来代替

self.navigationController?.pushViewController(newViewController, animated: true)

或将其包装在导航控制器中然后呈现

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier: "EVSignInViewController") as! EVSignInViewController
let navigation = UINavigationController(rootViewController: newViewController)
self.present(navigation, animated: true, completion: nil)

【讨论】:

  • 我应该在第二个 VC 上放什么?
  • 如果您展示它,您最好在第二个 VC 的导航栏中放置一个十字或关闭图标。如果你推动,你不应该在第二个 VC 中做任何事情
  • 我创建新项目来测试解决方案...第一个解决方案 self.navigationController?.pushViewController(newViewController, animated: true) 根本没有向我显示第二个 VC ..您的第二个解决方案传递给第二个查看但后退按钮仍然丢失
  • 你的第一个视图控制器可能没有导航控制器。呈现不会给你一个后退按钮。你添加一个关闭按钮
  • 天哪.. 忘记导航控制器了,它现在可以工作了!谢谢!
【解决方案2】:

对当前的第二个 VC 使用此方法。

self.navigationController?.pushViewController(newViewController, animated: true)

而不是这个

self.present(newViewController, 动画: true, 完成: nil)

你会得到返回按钮。

【讨论】:

  • 我将 present 更改为 self.navigationController?.pushViewController(newViewController, animated: true),现在它不显示第二个 VC
  • 它应该可以工作。可能是另一个问题。在示例项目中重新尝试。
  • 我应该在第二个 VC 上放什么?
  • 当您调用第二个 VC 时。它显示了什么?并检查第二个视图控制器的标识符。
  • 我确实创建了新项目.. 目前工作正常,但缺少后退按钮。当我使用 push 它什么都没有发生.. ID 是正确的!第二个 VC 包含 navigationController?.setNavigationBarHidden(false, animated: true) navigationItem.backBarButtonItem = UIBarButtonItem(title:"back", style:.plain, target:nil, action:nil)
【解决方案3】:

试试这个

    self.navigationController?.navigationBar.isHidden = false

【讨论】:

  • 用户已经这样做了:navigationController?.setNavigationBarHidden(false, animated: true)不是隐藏了
  • 尝试在 2nd Viewcontroller 的 viewWillAppear 中使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多