【发布时间】:2015-06-16 23:23:30
【问题描述】:
当它们在同一个 .swift 文件中时,为什么我不能将数据从一个视图控制器类传递到另一个视图控制器类?
为了理解传递的数据,我已经完成了下面链接的两个教程,并且都让你为你的第二个视图控制器制作了另一个 .swift 文件。当我完全跟随他们时,它就起作用了。当我做同样的事情但只是将class SecondViewController 与class FirstViewController 放在同一个.swift 文件中时,它不起作用。为什么?
我正在构建一个包含三个视图控制器的应用程序,如果可以的话,我宁愿将所有代码保存在一个文件中。这是为什么它不起作用还是只是形式不好?
教程:
How to Pass Data from View Controller (Swift : Xcode) on YouTube
Segue Between Swift View Controllers on CodingExplorer
这行得通:
// ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet var TextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var DestViewController: ViewTwo = segue.destinationViewController as ViewTwo
DestViewController.LabelText = TextField.text
}
}
// ViewTwo.swift
import UIKit
class ViewTwo: UIViewController {
@IBOutlet var Label: UILabel!
var LabelText = String()
override func viewDidLoad() {
Label.text = LabelText
}
}
这不是:
// ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet var TextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var DestViewController: ViewTwo = segue.destinationViewController as ViewTwo
DestViewController.LabelText = TextField.text
}
}
class ViewTwo: UIViewController {
@IBOutlet var Label: UILabel!
var LabelText = String()
override func viewDidLoad() {
Label.text = LabelText
}
}
【问题讨论】:
-
你能粘贴一些代码吗?
-
你为什么在同一个
.swift文件中做这一切。我认为这不是一个好习惯。所以对不同的viewController使用不同的.swift文件
标签: ios swift uiviewcontroller segue