如何将字典传递给不同视图控制器中的另一个字典

问题描述 投票:0回答:1

我有两个视图控制器(autoClaimViewController和reviewAutoViewController)。在autoClaimViewController中,我有一个字典(reviewTableViewData),它由一个称为ClaimData的结构组成(它包含两个字符串变量和一个UIImage变量)。当用户单击“ Review”按钮时,我希望将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

    }
swift dictionary tableview transfer
1个回答
0
投票

[我认为您最好的选择是在情节提要中设置一个顺序,使您从第一视图进入第二视图。这是一个指南。

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

在两个视图中都有一个地方来存储您要传递的信息。因此,在secon视图中创建一个var,以保存第一个视图中的reviewTableViewData。

然后在第一个视图中调用

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

这准备好发送数据。然后,您执行segue,并且应该为您传递数据。通过按钮或您在视图之间进行转换所使用的任何功能触发此功能来执行提示。

func performSegue(withIdentifier identifier: String, 
           sender: Any?){
    enter code here
}
© www.soinside.com 2019 - 2024. All rights reserved.