我正在尝试构建一个可以点击的单元格,存储单元格标签的当前文本,并将该标签发送到其他视图控制器。我到处都看过,不知道为什么它没有通过
具有表视图的视图控制器
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "openWave" {
if let destVC = segue.destination as? GoToWaveViewController {
destVC.waveLabel = sender as! String
print("sdf: \(sender)")
}
}
} ...
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = self.tableView.cellForRow(at: indexPath) as! MyWavesTableViewCell
let text = cell.waveLabel.text!
let label = self.groupNames[indexPath.row]
print(label)
performSegue(withIdentifier: "openWave", sender: label)
//self.tableView.deselectRow(at: indexPath, animated: true)}
第二个视图控制器
class GoToWaveViewController: UIViewController {
@IBOutlet weak var waveName: UILabel!
var waveLabel: String!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
setProperties()
}
func setProperties() {
self.waveLabel = self.waveName.text!
print("asdf: \(waveLabel)")
print("asdfa: \(self.waveLabel)")
}
答案 0 :(得分:0)
我认为这是您可能需要的逻辑错误
self.waveName.text = self.waveLabel
代替
self.waveLabel = self.waveName.text!
这将覆盖发送的值,所以这
print("asdf: \(waveLabel)")
print("asdfa: \(self.waveLabel)")
将打印空值
答案 1 :(得分:0)
好吧,当视图出现时,您调用setProperties
,它用self.waveLabel
中的文本覆盖 self.waveName
。这行
self.waveLabel = self.waveName.text!
应替换为
self.waveName.text = self.waveLabel
其次,请确定您的名字! Label
对于string
来说是一个坏名字。如果我在看这段代码,会立即认为waveName
是一个字符串,waveLabel
是一个标签,但这与您在这里看到的相反。