Как передать словарь в другой словарь в другом контроллере представления - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть два контроллера представления (autoClaimViewController и reviewAutoViewController). В autoClaimViewController у меня есть словарь (reviewTableViewData), который составлен из структуры под названием demandData (он содержит две строковые переменные и переменную UIImage). Когда пользователь нажимает кнопку «Обзор», я хочу, чтобы словарь reviewTableViewData передавался второму контроллеру представления, чтобы его данные могли отображаться в табличном представлении во втором контроллере представления (reviewAutoViewController). Как передать этот словарь другому контроллеру представления?

Пожалуйста, сделайте ваши ответы понятными для новичка - я все еще учусь. Я перемещаюсь между контроллерами представления, используя сегменты раскадровки.

Спасибо.

Дополнительный вопрос: Будут ли переданы изображения, которые я хранил в переменных, при прохождении словаря? Другими словами, работают ли изображения как целые числа и строки, где их можно без проблем передавать между переменными?

Мой код:

struct claimData {
    var images = UIImage()
    var imageTitle = String()
    var relatedUnrelated = String()
}

class autoClaimViewController: UIViewController {

var reviewTableViewData = [claimData]()


   @IBAction func reviewButton(_ sender: Any) {

        //PASSES THE INFORMATION TO THE REVIEW VIEW CONTROLLER
        //FIX THIS... IT NEEDS TO SEND THE reviewTableViewData ARRAY.
        //MAKE A DICTIONARY IN THE REVIEW CONTROLLER THAT RECEIVES THE DICTIONARY FROM THIS VIEW CONTROLLER.

        let vc2 = reviewAutoViewController()
        //Find out how to transfer a dictionary from one view controller to another

    }

1 Ответ

0 голосов
/ 10 апреля 2020

Я думаю, что ваш лучший выбор - создать в ваших раскадровках сцену, которая перенесет вас из 1-го представления во второе. Вот руководство.

https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/UsingSegues.html

В обоих представлениях есть место для хранения информации, которую вы хотите передать. Поэтому создайте переменную во втором представлении для хранения reviewTableViewData из первого представления.

Затем при первом просмотре вы звоните

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
    if segue.destination is reviewAutoViewController
    {
        let vc = segue.destination as? TertiaryViewController
        vc?.reviewTableViewData = reviewTableViewData
    }
}

. Полученные данные готовы к отправке. Затем вы выполняете переход, и данные должны быть переданы для вас. Perfomr Seugue с этим забавным c, который запускается кнопкой или чем угодно, что вы используете для перехода между представлениями.

func performSegue(withIdentifier identifier: String, 
           sender: Any?){
    enter code here
}
...