我正在尝试构建基于GoogleMaps的应用程序。当用户使用MapViewController时,我希望他们能够在地图上选择一个位置,然后单击右上角的“下一步”。这样做应该将它们带到另一个显示位置说明的屏幕(HomeViewController)。我坚持执行下一步按钮。我当前的按钮代码如下:
override func viewDidLoad()
{
....
navigationItem.rightBarButtonItem = UIBarButtonItem(title:"Next", style: .plain, target: self, action: #selector(MapViewController.next as (MapViewController) -> () -> ()))
}
func next()
{
print("next")
if let navController = self.navigationController, let viewController = self.storyboard?.instantiateViewController(withIdentifier: "indentfier") as? HomeViewController{
navController.pushViewController(viewController, animated: true)
}
}
我最初仅使用print("next")
来运行它,并且它起作用了(即,它只是在控制台上打印了“ next”)。当我通过推添加第二行时,单击下一步后,该应用开始崩溃。我的应用程序委托也出现了SIGABRT错误。
注意:HomeViewController实际上是主页;这是上一个屏幕,用户在地图之前已经看过4-5个屏幕。我基本上希望他们在点击“下一步”时回到首页的几个屏幕。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
替换
navigationItem.rightBarButtonItem = UIBarButtonItem(title:"Next", style: .plain, target: self, action: #selector(self.next(_:)))
@objc func next(_ bar:UIBarButtonItem) {
}