Передача данных с использованием instantiateViewControllerWithIdentifier между ViewControllers - PullRequest
0 голосов
/ 04 ноября 2018

Я изучал это и пробовал варианты в течение последних 2 дней, и я в тупике. У меня есть страница, где пользователь может провести по ячейке и видит следующие параметры 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 голосов
/ 04 ноября 2018

В вашей раскадровке ReportVC (странное имя для раскадровки, но все в порядке ...) выберите сцену ReportView (в InterfaceBuilder) и убедитесь, что в инспекторе удостоверений установлен идентификатор Storyboard ID «ReportView». Также убедитесь, что для класса установлено значение ReportViewController.

Это должно выглядеть так:

enter image description here

Обновление:

После общения с techgirl оказалось, что раскадровка не была названа "ReportVC" в конце концов. Поэтому для тех, кто читает этот ответ, также убедитесь, что вы ссылаетесь на правильный файл раскадровки.

...