【发布时间】:2023-03-13 08:37:01
【问题描述】:
我确信我有两个视图控制器,它们有适当的文件作为它们的类。 (ViewController1.swift 和 ViewController2.swift)我正在尝试使用以下代码将数据从一个视图控制器传递到另一个视图控制器;但我收到错误“UIView Controller 无法转换为 ViewController2”。我该怎么办?我试图改变 as !和 var 让;都没有用。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!){
if (segue.identifier == "btnSubmitSegue") {
var svc = segue.destinationViewController as ViewController2;
svc.DataPassed = textField.text
}
}
ViewController2 的代码 导入 UIKit
class ViewController2: UIViewController {
var toPass: String = ""
@IBOutlet weak var labeld: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.labeld.text = "passed: \(self.toPass)"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
ViewController1 的代码
import UIKit
class ViewController1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var textField: UITextField!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "TheSegue" {
let vc = segue.destinationViewController as! ViewController2
vc.toPass = self.textField.text!
}
}
}
【问题讨论】:
-
以上代码中没有
ViewController2。这是导致该错误的实际代码吗?如果没有,您能否发布产生错误UIViewController is not convertible to ViewController2的代码。 -
这不是问题。我选择 ViewController2 来提问,现在我也在上面的代码中更改了它。真正的问题是什么:)?
-
你的 ViewController2 是扩展 UIViewController 类吗?
-
是的,当我创建 Cocoa 文件时,我选择了 UIViewController 类
-
请在您的问题中显示来自
ViewController1.swift和ViewController2.swift的代码。