将数据从视图控制器传递到另一个视图控制器

Posted

技术标签:

【中文标题】将数据从视图控制器传递到另一个视图控制器【英文标题】:Passing data from view controller to another view controller 【发布时间】:2016-11-28 16:47:48 【问题描述】:

我还没有为我的问题找到一个确切的解决方案。我需要将数据从一个视图控制器传递到另一个视图控制器。问题是,在segue之后,传递的字符串数据并没有出现在标签中。

func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject) 
    if (segue.identifier == "segue1") 
        if let destination = segue.destination as? ResultsViewController 
            destination.name = correctslabel.text!

第二个控制器:只有变量和“名称”和一个UIlabel,它不显示传递的数据。

import UIKit

class ResultsViewController: UIViewController 

    @IBOutlet var namelabel: UILabel!
    var name = ""

    override func viewDidLoad() 
        super.viewDidLoad()
        name = namelabel.text!
    
    

我尝试了很多方法来做到这一点,但都没有奏效。谢谢

终于为我做了一个覆盖它的函数,这意味着我必须将发件人从 AnyObject 更改为 Any?。

【问题讨论】:

【参考方案1】:

你没试过吗?

// ResultsViewController.swift
override func viewDidLoad() 
    super.viewDidLoad()
    namelabel.text = name

【讨论】:

显示错误:可选类型“字符串”的值未展开 @TobyV。在发布的代码中,您以这种方式声明名称变量var name = ""。这意味着没有什么可以打开的,它已经是非可选的。有没有可能,您最近将声明更改为 var name: String? = "" 之类的东西? 我在那里使用 namelabel.text = name 并且 namelabel.text 是可选的,所以它可能是问题所在。你知道如何让它成为非可选的吗?非常感谢 @TobyV。可以将非可选分配给可选。如果你反其道而行之,就会出现问题。您发布的代码似乎不是最新的。 我添加了更新的代码。如果您检查它,请欣赏它。不过还是非常感谢你。

以上是关于将数据从视图控制器传递到另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从表视图传递到另一个视图控制器

将数据从 viewcontroller tableview 传递到另一个视图控制器

尝试使用 segue 将数据从一个视图控制器传递到另一个视图控制器

如何将不同的数据从表视图传递到另一个视图控制器

将标签数据从表视图传递到另一个视图控制器

Swift 4:将数据从集合视图单元传递到另一个没有故事板的视图控制器