为 iOS 应用程序创建了一个下一步按钮...单击时出现 SIGABRT 错误

Posted

技术标签:

【中文标题】为 iOS 应用程序创建了一个下一步按钮...单击时出现 SIGABRT 错误【英文标题】:Created a Next button for iOS app... giving SIGABRT error upon clicking 【发布时间】:2018-11-20 18:53:46 【问题描述】:

我正在尝试构建一个基于 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 个屏幕。我基本上希望他们在点击下一步时返回几个屏幕到主页。

任何帮助将不胜感激。谢谢。

【问题讨论】:

您需要使用@objc 标记您的next 函数。还有#selector(MapViewController.next as (MapViewController) -> () -> ()) 这可能只是#selector(next) 【参考方案1】:

替换

navigationItem.rightBarButtonItem = UIBarButtonItem(title:"Next", style: .plain, target: self, action: #selector(self.next(_:)))

@objc func next(_ bar:UIBarButtonItem) 


【讨论】:

感谢您的帮助...但是,应用程序委托仍然给我一个 SIGABRT 错误。我根据您的建议更改了代码。有什么想法吗?再次感谢! 可能是你的下一个 vc HomeViewController 有问题创建一个空控制器并导航到它以验证这还检查是否调用了下一个函数,跟踪你的带有日志*断点的代码 谢谢 Sh_Khan,我只需要手动将一个 Segue 从我的 MapVC 添加到 HomeVC。

以上是关于为 iOS 应用程序创建了一个下一步按钮...单击时出现 SIGABRT 错误的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何使用下一步和后退按钮更改标签 (DetailView)

如何在不单击“下一步”按钮的情况下以重力形式进入下一页

单击下一步按钮如何更改图像

iOS当按下按钮“下一步”加载新行表单解析Swift

如何创建数据库实例

使用引导程序 nav-pill 单击下一步按钮时的表单验证