在ViewController之间使用InstantiateViewControllerWithIdentifier传递数据

时间:2018-11-04 01:13:16

标签: ios swift swift4 nsdictionary

我一直在研究这个问题,并且在过去的两天里一直在尝试各种选择,但感到很困惑。我有一个页面,用户可以在其中滑动单元格并看到以下选项 enter image description here

当用户单击“报告用户”时,应将他们带到带有允许他们提交有关其他用户的投诉的表单的页面。第一个VC称为Messages,它应该传递报告用户和被报告用户的用户名。现在,仅在NSDictionary中传递报告用户。我尝试过的最新方法导致应用程序崩溃,并显示“ libc ++ abi.dylib:以类型为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
    }

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在ReportVC情节提要中(情节提要的奇怪名称,但是..),选择ReportView场景(在InterfaceBuilder中),然后在Identity Inspector中验证其情节提要ID设置为“ ReportView”。还要确保将类设置为ReportViewController。

它应该像这样:

enter image description here

更新

与techgirl聊天后,发现故事板根本没有命名为“ ReportVC”。因此,对于那些阅读此答案的人,还请检查您是否引用了正确的情节提要文件。