@IBOutlet 属性 不能有非对象类型
@IBOutlet property cannot have non-object type
我试图在视图控制器之间传递一个结构,但我收到编译器错误“@IBOutlet 属性 不能有非对象类型”。我尝试添加@objc 但仍然出现错误。如何在视图控制器之间传递这些数据?为什么会出现此错误以及如何更正它?谢谢
import UIKit
struct DocObject: Codable {
let filename: String
let doclink: Int
}
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
// var nameText = ""
var obj = DocObject(filename: "filename", doclink: 123)
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func done(_ sender: Any) {
print ("In VC1 nameText ", obj)
performSegue(withIdentifier: "name", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as! VCTwo2
vc.finalObj = obj
}
}
import UIKit
class VCTwo2: UIViewController {
@IBOutlet var finalObj: DocObject!
// var finalName = 0
override func viewDidLoad() {
super.viewDidLoad()
print ("In VC2 ", finalObj!)
}
}
如果 属性 是从 xib 或情节提要中加载的,则您只需使用 @IBoutlet
定义 属性。由于您从另一个视图控制器传递数据结构,只需将 finalObj
定义为常规变量。
class VCTwo2: UIViewController {
var finalObj: DocObject!
override func viewDidLoad() {
super.viewDidLoad()
}
}
我试图在视图控制器之间传递一个结构,但我收到编译器错误“@IBOutlet 属性 不能有非对象类型”。我尝试添加@objc 但仍然出现错误。如何在视图控制器之间传递这些数据?为什么会出现此错误以及如何更正它?谢谢
import UIKit
struct DocObject: Codable {
let filename: String
let doclink: Int
}
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
// var nameText = ""
var obj = DocObject(filename: "filename", doclink: 123)
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func done(_ sender: Any) {
print ("In VC1 nameText ", obj)
performSegue(withIdentifier: "name", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as! VCTwo2
vc.finalObj = obj
}
}
import UIKit
class VCTwo2: UIViewController {
@IBOutlet var finalObj: DocObject!
// var finalName = 0
override func viewDidLoad() {
super.viewDidLoad()
print ("In VC2 ", finalObj!)
}
}
如果 属性 是从 xib 或情节提要中加载的,则您只需使用 @IBoutlet
定义 属性。由于您从另一个视图控制器传递数据结构,只需将 finalObj
定义为常规变量。
class VCTwo2: UIViewController {
var finalObj: DocObject!
override func viewDidLoad() {
super.viewDidLoad()
}
}