Строка не проходит через Segue? - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь создать ячейку, которую можно коснуться, сохранить текущий текст метки ячейки и отправить эту метку другому контроллеру представления.Я посмотрел везде и не могу понять, почему он не проходит

Просмотр контроллера с представлением таблицы

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 голосов
/ 15 декабря 2018

Хорошо, когда появляется ваше представление, вы звоните setProperties, который перезаписывает self.waveLabel текстом из self.waveName.Эта строка

self.waveLabel = self.waveName.text!

должна быть заменена на

self.waveName.text = self.waveLabel

Во-вторых, исправьте ваши имена!Label - это плохое имя для чего-то, что является string.Если бы я посмотрел на этот код, то сразу подумал бы, что waveName - это строка, а waveLabel - это метка, но это противоположно тому, что у вас есть.

0 голосов
/ 15 декабря 2018

Я вижу, что это логическая ошибка, вам может понадобиться

self.waveName.text =  self.waveLabel

Вместо

self.waveLabel = self.waveName.text!

И это перезаписывает отправленное значение, так что это

print("asdf: \(waveLabel)")
print("asdfa: \(self.waveLabel)")

выведет пустые значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...