我正在尝试用Swift制作一个简单的计算器。我想得到"文字"在我创建的按钮上。本教程中的讲师使用了一个属性:
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle
}
问题是,如果我这样做了:
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.titleLabel.text
}
区别是什么?他们会得到相同的结果吗? 如果是这样,怎么知道何时使用哪个?
答案 0 :(得分:2)
titleLabel.text
主要用于配置按钮的文本(针对每个州)
currentTitle
是只读的。这主要用于获取当前显示的标题。
您无法设置此属性,因为只要按钮状态发生更改,此属性就会自动设置。您可以使用currentTitle
获取与按钮关联的标题字符串,而不是使用titleLabel.text
,因为只要按钮状态发生变化,就会自动设置currentTitle
属性。
答案 1 :(得分:0)
sender.currentTitle
:
按钮上显示的当前标题。 (只读)
<强>声明强>
var currentTitle: String? { get }
<强>讨论强>
每当按钮时,都会自动设置此属性的值 国家变化。对于没有自定义标题字符串的州 与它们相关联,此方法返回当前的标题 显示,通常是与...相关联的 UIControlStateNormal状态。该值可能为零。
sender.titleLabel.text
:
显示a的currentTitle属性值的视图 按钮。 (只读)
<强>声明强>
var titleLabel: UILabel? { get }
<强>讨论强>
虽然此属性是只读的,但它自己的属性是 读/写。主要使用这些属性来配置文本 按钮。例如:
let button = UIButton.buttonWithType(.System) as UIButton button.titleLabel.font = UIFont.systemFontOfSize(12) button.titleLabel.lineBreakMode = .ByTruncatingTail
请勿使用标签对象设置文本颜色或阴影颜色。 相反,使用setTitleColor:forState:和 setTitleShadowColor:forState:这个类的方法来制作它们 变化。
即使按钮没有,titleLabel属性也会返回一个值 已经显示了。系统的属性值为nil 的按钮。
简单来说:
sender.titleLabel?.text = "NewTitle" //this will work
sender.currentTitle = "newTitle" //this will give you an error because it is read only property.
和
let digit = sender.currentTitle
let digit = sender.titleLabel!.text
这两个都有效,因为您正在阅读按钮的属性并将其分配给digit
实例。
答案 2 :(得分:0)
.currentTitle
和titleLabel.text
都返回相同的值,
但.currentTitle
是只读的,你不能修改他的值(它只在iOS 8+中可用)。自iOS 3+开始提供.titleLabel
,您可以修改text
,font
等。