错误 UIViewController 没有成员
Posted
技术标签:
【中文标题】错误 UIViewController 没有成员【英文标题】:Error UIViewController has no member 【发布时间】:2016-10-03 09:12:17 【问题描述】:目前正在开发我的应用程序,以便快速学习(我是全新的)。我遇到了一个我似乎无法解决的错误。 我的故事板中有两个视图,有两个视图控制器,因此是视图控制器和设置。
在“设置”视图我有一个textfield
,在“视图控制器”视图我有一个标签。
我想将文本从“设置”上的文本字段传递到“视图控制器”上的标签
目前我收到以下错误:
“UIViewController”类型的值没有成员“ViewController”
对于输入字段,我的代码看起来有点像这样:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
var secondVC: ViewController = segue.destination.ViewController as ViewController
secondVC.receivedString = textField.text!
对于标签:
class ViewController: UIViewController
@IBOutlet var city: UILabel!
var receivedString: String = ""
override func viewDidLoad()
super.viewDidLoad()
label.text = receivedString
“label.text”也给了我一个未解析的标识符..
【问题讨论】:
【参考方案1】:要在 Swift 3 中获取目的地 viewController
,它只是 segue.destination
而不是 segue.destination.ViewController
。
var secondVC = segue.destination as! ViewController
对于第二个错误,您已声明 UILabel
名称为 city
而不是 label
所以它必须是 city.text = receivedString
【讨论】:
嗯,它确实消除了错误,如果我决定说: override func prepare(for segue: UIStoryboardSegue, sender: Any?) let secondVC = segue.destination as! ViewController secondVC.label = textField.text! 我想这就是我所做的?这样做不是最佳做法吗? @JeppeC 在您的问题中,您正在传递带有对象receivedString
的字符串并在viewDidLoad
中分配城市标签的文本,这是传递数据的正确方法,因为在prepare(for:sender:)
UILabel 对象不是尚未初始化。
欢迎朋友 :)
哦,顺便说一句!只是为了它的逻辑,既然我已经做了segue,那么我是否能够在不再次编写整个函数的情况下传递更多对象? :-)以上是关于错误 UIViewController 没有成员的主要内容,如果未能解决你的问题,请参考以下文章
推送 UIViewController 时不能在类型上使用实例成员
为啥不在 UIViewController 子类中分配 UIWindow 对象呢?