【问题标题】:Error UIViewController has no member错误 UIViewController 没有成员
【发布时间】: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”也给了我一个未解析的标识符..

【问题讨论】:

    标签: ios swift uiviewcontroller swift3


    【解决方案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,那么我是否能够在不再次编写整个函数的情况下传递更多对象? :-)
    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多