Сделайте переход к контроллеру табличного представления из контроллера представления - PullRequest
2 голосов
/ 03 августа 2020

Я пытаюсь перейти к контроллеру табличного представления, когда программно нажимается кнопка в моем контроллере представления. Вот мой код:

@objc func editProfileButtonAction(sender: UIButton!) {
    print("ButtonTapped")
    
    func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if let identifier = segue.identifier {
        if identifier == "EditProfile" {
            var editProfileTableViewController = segue.destination as! EditProfileTableViewController
          editProfileTableViewController = self
        }
      }
    }
    
}

Мне действительно нужна помощь. Мне также нужно сделать переход к контроллеру представления коллекции, используя кнопку в том же контроллере представления.

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Хорошо, чтобы прояснить это. Программно создать переход невозможно. Переходы - это стрелки на раскадровке, соединяющие один V C с другим. Они вызываются с помощью: performSegue. Это вызывает функцию prepare.

Если вы хотите показать новый V C при нажатии кнопки (без перехода), то вы используете Present (V C (), animated: true, завершения : nil)} внутри функции кнопки. V C представлен модально.

@objc func editProfileButtonAction(sender: UIButton!) {
    print("editProfileButtonAction")
    present(EditProfileTableViewController(), animated: true, completion: nil)
}
0 голосов
/ 04 августа 2020

Убедитесь, что сегмент в Раскадровке имеет в точности идентификатор: «EditProfile». Обычно я пишу идентификаторы с нижней буквы в начале. Также нужно подготовиться к переходу. Например, установите делегата:

  // Set ViewController class as the delegate of the EditProfileTableViewControllerDelegate protocol
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let identifier = segue.identifier {
      if identifier == "EditProfile" {
        let editProfileTableViewController = segue.destination as! EditProfileTableViewController
        editProfileTableViewController = self
      }
    }
  }

В какой-то момент времени на кодирование я удалил всю свою раскадровку из-за слишком большого количества ошибок, которые я едва мог решить. Сейчас все это делаю программно. Сначала было немного сложно настроить все представления самому, но в конце концов я очень рад, что больше не использую раскадровки. Для некоторых вещей мне нужны xib и для тестирования раскадровки. Если вам интересно: большинство iOS программистов используют раскадровку, так что ничего страшного, если вы go продолжите с этим. Преимущество выполнения всего этого программным способом заключается в том, что больше нет переходов. Так что просто представьте, и в навигации V C s pu sh, pop, ...

...