UI: not all subclasses of CopyableLabelTableViewCell have a detailTextLabel, so generalize

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld
2018-10-31 16:38:05 +01:00
parent ecb6035d36
commit fff1a70ab9
3 changed files with 13 additions and 1 deletions
@@ -6,6 +6,10 @@ import UIKit
class CopyableLabelTableViewCell: UITableViewCell { class CopyableLabelTableViewCell: UITableViewCell {
var copyableGesture = true var copyableGesture = true
var textToCopy: String? {
fatalError("textToCopy must be implemented by subclass")
}
required init?(coder aDecoder: NSCoder) { required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
@@ -41,7 +45,7 @@ class CopyableLabelTableViewCell: UITableViewCell {
} }
override func copy(_ sender: Any?) { override func copy(_ sender: Any?) {
UIPasteboard.general.string = self.detailTextLabel?.text UIPasteboard.general.string = textToCopy
} }
override func prepareForReuse() { override func prepareForReuse() {
@@ -311,6 +311,10 @@ class TunnelDetailTableViewKeyValueCell: CopyableLabelTableViewCell {
set(value) { detailTextLabel?.text = value } set(value) { detailTextLabel?.text = value }
} }
override var textToCopy: String? {
return self.detailTextLabel?.text
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) { override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: .value1, reuseIdentifier: TunnelDetailTableViewKeyValueCell.id) super.init(style: .value1, reuseIdentifier: TunnelDetailTableViewKeyValueCell.id)
} }
@@ -441,6 +441,10 @@ class TunnelEditTableViewKeyValueCell: CopyableLabelTableViewCell {
valueTextField.spellCheckingType = .no valueTextField.spellCheckingType = .no
} }
override var textToCopy: String? {
return self.valueTextField.text
}
required init?(coder aDecoder: NSCoder) { required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }