I'm trying to build a cell that can be tapped, store the current text of the cell label, and send that label to a different view controller. I've looked everywhere and can't figure out why it's not passing
View controller with table view
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)}
Second View Controller
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)")
}
I see it's a logical error you may need
self.waveName.text = self.waveLabel
Instead of
self.waveLabel = self.waveName.text!
And that overwrites the sended value , so this
print("asdf: \(waveLabel)")
print("asdfa: \(self.waveLabel)")
will print empty values
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments