字符串不通过segue?

时间:2018-12-15 00:57:39

标签: ios swift uitableview

我正在尝试构建一个可以点击的单元格,存储单元格标签的当前文本,并将该标签发送到其他视图控制器。我到处都看过,不知道为什么它没有通过

具有表视图的视图控制器

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)")
}

2 个答案:

答案 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是一个标签,但这与您在这里看到的相反。