“[UILabel]”没有名为 'text' 的成员
'[UILabel]' does not have a member named 'text'
升级到Xcode6.3后,无法将String赋值给UILabel。我在 UILabel textLabel 上收到 Swift 编译器错误消息“'[UILabel]' 没有名为 'text' 的成员”。有解决办法吗?
import UIKit
class ViewController: UIViewController {
@IBOutlet var nameTxt: [UITextField]!
@IBOutlet var textLabel: [UILabel]!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func changeLabel(sender: UIButton) {
self.textLabel?.text = "Success"
}
}
当我们将情节提要中的标签(或其他任何东西)连接到我们的源代码时,我们将得到一个如下所示的弹出菜单:
这里点击"Connect"时(我弹完后只输入了"textLabel",其他默认),会产生如下一行代码:
@IBOutlet weak var textLabel: UILabel!
但是,"Outlet" 并不是将我们的对象从界面构建器连接到源代码的唯一选择。
如果我们将 "Connection" 下拉菜单更改为 select "Outlet Collection",如下所示:
那么生成的代码行将与您问题中的代码行完全匹配:
@IBOutlet var textLabel: [UILabel]!
我们创建了一组标签。这在某些情况下很有用,但也许不是我们真正想要的。
为了解决这个问题,我们必须首先确保取消挂钩我们的原始连接(否则,我们将出现运行时异常)。
因此,如果您返回到 Interface Builder 并右键单击有问题的标签,您将收到一个如下所示的菜单:
请注意标签是如何链接到 "Referencing Outlet Collection" 而不是 "Referencing Outlet" 的?这是我们需要修复的。因此,单击该连接的 X 以取消链接。现在我们可以转到源代码并删除生成的@IBOutlet
。
现在,将您的标签重新连接为常规 "Outlet" 而不是 "Outlet Collection",您的 changeLabel
方法将按原样完美运行。
当您的标签正确连接为 "Outlet" 而不是 "Outlet Collection" 时,您的界面生成器右键单击菜单将如下所示:
(注意这张图和上一张图的区别。)
升级到Xcode6.3后,无法将String赋值给UILabel。我在 UILabel textLabel 上收到 Swift 编译器错误消息“'[UILabel]' 没有名为 'text' 的成员”。有解决办法吗?
import UIKit
class ViewController: UIViewController {
@IBOutlet var nameTxt: [UITextField]!
@IBOutlet var textLabel: [UILabel]!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func changeLabel(sender: UIButton) {
self.textLabel?.text = "Success"
}
}
当我们将情节提要中的标签(或其他任何东西)连接到我们的源代码时,我们将得到一个如下所示的弹出菜单:
这里点击"Connect"时(我弹完后只输入了"textLabel",其他默认),会产生如下一行代码:
@IBOutlet weak var textLabel: UILabel!
但是,"Outlet" 并不是将我们的对象从界面构建器连接到源代码的唯一选择。
如果我们将 "Connection" 下拉菜单更改为 select "Outlet Collection",如下所示:
那么生成的代码行将与您问题中的代码行完全匹配:
@IBOutlet var textLabel: [UILabel]!
我们创建了一组标签。这在某些情况下很有用,但也许不是我们真正想要的。
为了解决这个问题,我们必须首先确保取消挂钩我们的原始连接(否则,我们将出现运行时异常)。
因此,如果您返回到 Interface Builder 并右键单击有问题的标签,您将收到一个如下所示的菜单:
请注意标签是如何链接到 "Referencing Outlet Collection" 而不是 "Referencing Outlet" 的?这是我们需要修复的。因此,单击该连接的 X 以取消链接。现在我们可以转到源代码并删除生成的@IBOutlet
。
现在,将您的标签重新连接为常规 "Outlet" 而不是 "Outlet Collection",您的 changeLabel
方法将按原样完美运行。
当您的标签正确连接为 "Outlet" 而不是 "Outlet Collection" 时,您的界面生成器右键单击菜单将如下所示:
(注意这张图和上一张图的区别。)