【问题标题】:Passing a String/Object value to another ViewController将字符串/对象值传递给另一个 ViewController
【发布时间】:2017-05-11 02:56:43
【问题描述】:

我正在使用这个打开另一个 ViewController:

let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main", bundle:nil)
let homeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "IssueViewController")
self.present(homeViewController, animated: true, completion: nil)

除此之外,我还需要将一个 Person 对象和一个 String 值传递给第二个 ViewController。

struct Person {
  var Name: String
  var Details: String
}

我需要做哪些更改才能将 Person 对象附加到现有代码?

编辑:这是第二个 ViewController

我正在尝试从此视图中检索值

class IssueViewController: UIViewController {

    var person: Person = Person();

    override func viewDidLoad() {
        super.viewDidLoad()

    }

}

【问题讨论】:

  • 问题视图控制器必须有适当的人,你需要的只是将 homeViewController.person 设置为你的对象

标签: ios swift uiviewcontroller swift3 uistoryboard


【解决方案1】:

//第一个控制器的变化

let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:Bundle.main)
let homeViewController: IssueViewController = mainStoryboard.instantiateViewController(withIdentifier: "IssueViewController") as! IssueViewController
homeViewController.person = Person(Name:"ABC",Details:"XYZ")
homeViewController.bindWithData(yourStringObject)
self.present(homeViewController, animated: true, completion: nil)

//第二个视图控制器的变化

class IssueViewController: UIViewController {

var person: Person = Person(Name:"",Details:"");

override func viewDidLoad() {
    super.viewDidLoad()
    print(person.Name)
    print(person.Details)
}
func bindWithData(yourStringObject:String){
//your code here.
}
}

【讨论】:

  • 当我将人设置为 homeViewController 时出现此错误:Value of type 'UIViewController' has no member 'person'
  • 你在那里定义了 struct Person 吗?
  • 嘿抱歉,我在编辑中修复的代码有问题,请查看。
  • 谢谢,错误消失了。但是我在哪里可以收到第二个 VC 中的 person 对象呢?在 viewDidLoad 里面?你能用print() 代码行来证明吗
  • 我在第二个 VC 的打印语句中得到一个 nil 值。你的代码没问题吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多