在 ViewController 之间使用 instantiateViewControllerWithIdentifier 传递数据

Passing data using instantiateViewControllerWithIdentifier between ViewControllers

在过去的 2 天里,我一直在研究这个问题并尝试各种选择,但被难住了。我有一个页面,用户可以在其中滑动单元格并看到以下选项

当用户点击“举报用户”时,他们应该会被带到一个页面,其中包含一个允许他们提交对其他用户的投诉的表单。第一个 VC 称为消息,它应该传递报告用户和被报告用户的用户名。现在只有报告用户被传递,因为它在 NSDictionary 中。我尝试过的最新方法是导致应用程序崩溃并显示 'libc++abi.dylib: terminating with uncaught exception of type NSException' 以下是代码示例:

 let shareAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Report User" , handler: { (action:UITableViewRowAction!, indexPath:IndexPath!) -> Void in


        let shareMenu = UIAlertController(title: nil, message: "Report User", preferredStyle: .actionSheet)

        let editBtn = UIAlertAction(title: "Harrassment, Inappropriate Content, Abuse", style: .default) { (action:UIAlertAction) in
            self.reportPost(indexPath)

        }
        //let harrassAction = UIAlertAction(title: "Harrassment", style: UIAlertActionStyle.default, handler: nil)
        let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: nil)

        shareMenu.addAction(editBtn)

        shareMenu.addAction(cancelAction)
       self.present(shareMenu, animated: true, completion: nil)

    })

func reportPost(_ indexPath : IndexPath) {
        let guest = self.guest[indexPath.row]
        let storyboard = UIStoryboard(name: "ReportVC", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: "ReportView") as! ReportViewController
        vc.reportLbl.text = guest as? String
    }

非常感谢任何帮助。

在您的 ReportVC 情节提要中(情节提要的名字很奇怪,但没问题..),select 您的 ReportView 场景(在 InterfaceBuilder 中)并在 Identity Inspector 中验证其情节提要 ID 设置为 "ReportView".还要确保 class 设置为 ReportViewController。

它应该是这样的:

更新:

和techgirl聊天后,发现故事板根本就没有命名"ReportVC"。因此,对于那些阅读此答案的人,还请检查您引用的故事板文件是否正确。