Swift中的titleLabel.text与currentTitle

Swift中的titleLabel.text与currentTitle,swift,uibutton,Swift,Uibutton,我想用Swift做一个简单的计算器。我想获得我创建的按钮上的“文本”。本教程中的讲师正在使用一个属性: @IBAction func appendDigit(sender: UIButton) { let digit = sender.currentTitle } 问题是,如果我这样做: @IBAction func appendDigit(sender: UIButton) { let digit = sender.titleLabel.text } 有什么区别?它们会产生

我想用Swift做一个简单的计算器。我想获得我创建的按钮上的“文本”。本教程中的讲师正在使用一个属性:

@IBAction func appendDigit(sender: UIButton) {
    let digit = sender.currentTitle
}
问题是,如果我这样做:

@IBAction func appendDigit(sender: UIButton) {
    let digit = sender.titleLabel.text
}
有什么区别?它们会产生同样的结果吗?
如果是这样,如何知道何时使用哪个?

对于
发送者。currentTitle

按钮上显示的当前标题。(只读)

声明

var currentTitle: String? { get }
var titleLabel: UILabel? { get }
讨论

var currentTitle: String? { get }
var titleLabel: UILabel? { get }
每当按下按钮时,此属性的值将自动设置 状态改变。对于没有自定义标题字符串的州 与它们关联时,此方法返回当前显示的标题 显示,通常是与 uicontrol状态正常状态。该值可能为零

对于
sender.titleLabel.text

一个视图,用于显示 按钮(只读)

声明

var currentTitle: String? { get }
var titleLabel: UILabel? { get }
讨论

var currentTitle: String? { get }
var titleLabel: UILabel? { get }
虽然此属性是只读的,但其自身的属性是 读/写。这些属性主要用于配置的文本 按钮。例如:

let button = UIButton.buttonWithType(.System) as UIButton
button.titleLabel.font = UIFont.systemFontOfSize(12)
button.titleLabel.lineBreakMode = .ByTruncatingTail
不要使用标签对象设置文字颜色或阴影颜色。 相反,请使用setTitleColor:forState:and setTitleShadowColor:forState:此类的方法使 变化

titleLabel属性返回一个值,即使按钮没有 已经展示过了。对于系统,属性的值为零 纽扣

简言之:

sender.titleLabel?.text = "NewTitle"  //this will work
sender.currentTitle = "newTitle"      //this will give you an error because it is read only property.
以及:


这两种方法都能起作用,因为您正在读取按钮的属性并将其分配给
数字
实例。

两者都
。currentTitle
标题标签。text
返回相同的值,
但是
.currentTitle
是只读的,您不能修改他的值(并且它仅在iOS 8+中可用)
.titleLabel
从iOS 3+开始提供,您可以修改
文本
字体
等。

titleLabel.text
主要用于配置按钮的文本(针对每个状态)

currentTitle
为只读。这主要用于获取当前显示的标题


无法设置此属性,因为每当按钮状态更改时,此属性将自动设置。您可以使用
currentTitle
获取与按钮关联的标题字符串,而不是使用
titleLabel.text
,因为每当按钮状态更改时,
currentTitle
属性都会自动设置。

忽略可选内容(!/?),现在,我只想知道这两种方法的主要区别是什么。在什么情况下使用哪一个。添加结论,而不是仅仅复制文档。我认为对他来说,理解就足够了。@Juliannkrólmaybe是的,也许不是。他有权查阅这些文件,所以我认为对他和其他人来说,包括一些清晰、简洁的摘要可能会很好,这些摘要简单地回答了他提出的问题。这是我的建议,您可以修改,但更改
文本将不会产生任何可见效果,谢谢。所以基本上,如果我只想要文本,我更喜欢使用currentTitle而不是titleLabel.text,不管按钮的状态如何?没错!关于我的理解。