Swift “[UILabel]”没有名为“text”的成员
升级到Xcode 6.3后,无法将字符串分配到UILabel中。我收到Swift编译器错误消息“[UILabel]”在UILabel textLabel上没有名为“text”的成员。有什么好办法吗Swift “[UILabel]”没有名为“text”的成员,swift,interface-builder,Swift,Interface Builder,升级到Xcode 6.3后,无法将字符串分配到UILabel中。我收到Swift编译器错误消息“[UILabel]”在UILabel textLabel上没有名为“text”的成员。有什么好办法吗 import UIKit class ViewController: UIViewController { @IBOutlet var nameTxt: [UITextField]! @IBOutlet var textLabel: [UILabel]! override
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"
}
}
当我们将标签或任何其他内容从情节提要连接到源代码时,我们将得到一个弹出菜单,该菜单如下所示: 当您单击此处连接时,我在获得弹出窗口后所做的一切都是类型textLabel,其他所有内容都是默认值,它将生成以下代码行:
@IBOutlet weak var textLabel: UILabel!
然而,Outlet并不是将我们的对象从interface builder连接到源代码的唯一选项
如果我们将“连接”下拉列表更改为“选择插座集合”,如下所示:
然后生成的代码行将与问题中的代码行完全匹配:
@IBOutlet var textLabel: [UILabel]!
我们已经创建了一系列标签。这在某些情况下很有用,但可能不是我们真正想要的
为了解决这个问题,我们必须首先确保取消钩住原始连接,否则将出现运行时异常
因此,如果您返回Interface Builder并右键单击相关标签,您将收到如下菜单:
请注意标签是如何链接到引用插座集合的,而不是链接到引用插座的?这就是我们需要解决的问题。因此,单击该连接的X以取消链接。现在我们可以转到源代码并删除生成的@IBOutlet
现在,把你的标签作为一个普通的销售点而不是一个销售点集合,你的changeLabel方法会像现在一样工作得很好
当标签正确连接为插座而不是插座集合时,interface builder的右键单击菜单将如下所示:
请注意此图像与前一图像之间的差异