Swift: Как я могу передать данные из "didSelectRowAt" в другой V C, не представляя это или segue? - PullRequest
0 голосов
/ 07 февраля 2020

Надеюсь, у всех все хорошо!

Что я в основном хочу, так это то, что я хочу нажать на строку в моем TableViewController, который затем принимает, например, текст , что строка имеет и передает его ViewController, которого в данный момент нет. Например, когда вы нажимаете на песню в приложении Spotify , и она воспроизводит ее, ничего не представляя, но сведения о песне отображаются в мини-проигрывателе.

Кто-нибудь знает, как это сделать? который? Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 07 февраля 2020

Что ж, вы можете сделать это, но вам нужно сначала инициализировать View Controller, чтобы вы могли получить доступ к его свойствам, например:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DestinationVc") as? DestinationVc
    vc?.text = "TextToBePassed"
}

И все это без представления, но я не понимаю, почему вы не хочу ни показывать, ни показывать, но вот как это делается на основе вашего вопроса. Спасибо:)

0 голосов
/ 07 февраля 2020
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

      let vc = NextViewController()
        vc.title = "\(Title)"
      self.navigationController?.pushViewController(vc,animated: true)

    }

Использование этого метода может помочь вам в передаче данных на другой контроллер без использования segue.

0 голосов
/ 07 февраля 2020

Если вы создали пользовательский интерфейс с помощью XIB или programatically, используйте следующий подход:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

  let nextVC = NextViewController()
  nextVC.text = model?[indexPath.row].text // If you are using model or if you have stored the data in the array then nextVC.text = yourArray[indexPath.row]["text"]    
  self.navigationController?.pushViewController(nextVC,animated: true)

}

Также в NextViewController необходимо добавить текст. Как это:

class NextViewController: UIViewController {

  var text = String()

  //MARK:- View Life Cycle

  override func viewDidLoad() {
     super.viewDidLoad()
     print(text) //This will print the text passed from previous VC
  }
}
0 голосов
/ 07 февраля 2020

Предполагается, что это для iOS, поскольку вопрос не указан.

В методе tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) в вашем UITableViewDelegate вы можете получить текст ячейки с помощью

let cell = tableView.cellForRow(at: indexPath)?.textLabel?.text // cell: String?

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

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