【发布时间】:2017-02-08 19:16:19
【问题描述】:
在 Stack Overflow 上有很多这样的问题,但似乎没有一个可以简单地回答我的具体问题。我希望能够在一个视图控制器上创建一个标签,该标签可以根据另一个视图控制器上的标签值来更改它显示的内容。我正在使用 Xcode 8.2.1 和 Swift 3。
编辑
FirstViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showSecondViewController" {
if let viewController = segue.destination as? SecondViewController {
if messageLabel != nil {
SecondViewController.billString = self.messageLabel //error on this line
}
}
}
}
第二视图控制器
@IBOutlet weak var billLabel: UILabel!
var billString = "test"
override func viewDidLoad() {
super.viewDidLoad()
billLabel.text = billString
}
【问题讨论】:
-
你能更具体一点吗?我相信您可以使用 prepareForSegue 来做到这一点,但仍然……您应该对此多加说明。
-
@i6x86 -- 我是一个相当新的程序员,所以我不确定我可以提供多少更多信息......第二个视图控制器上有一个标签,我想更改的值基于第一个视图控制器上的标签值。
-
您在该标签上显示什么类型的数据,是字符串还是整数?
-
@i6x86 两个标签都包含字符串。
-
这是 instance 变量,您尝试在 class 级别访问它。难怪编译器根本没有得到你;也许
viewController.billString = ...或类似的东西在这里看起来在语法上是正确的,但是您优雅地忽略了定义类型,似乎您尝试将UILabel实例分配给String...这里有很多歧义,很难告诉你你想在这里做什么。
标签: swift uiviewcontroller xcode8 iboutlet