错误 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 时不能在类型上使用实例成员

Swift 3 - 实例化视图控制器后没有成员错误

类型“任何”没有下标成员[重复]

为啥不在 UIViewController 子类中分配 UIWindow 对象呢?

如何解决错误'UIViewController'没有可见的@interface声明选择器''

有没有办法知道何时呈现 UIViewController 失败?