func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(identifier:
"PersonViewController") as? PersonViewController
vc?.names = persons[indexPath.row].emer!
vc?.lastnames = persons[indexPath.row].mbiemer!
vc?.delegate = self
PersonViewController.indexes = indexPath.row
self.navigationController?.pushViewController(vc!, animated: true)
}`
У меня бывают такие ситуации:
Первый ViewController — это collectionView, второй — это viewcontroller, которому разрешено добавлять нового человека, когда я нажимаю кнопку, и он отлично работает. Я использовал делегатов и Core Data для локальной памяти.
Также у второго ViewController есть еще одна кнопка для редактирования человека. Когда я нажимаю кнопку, появляется новый viewController с расширением UIAdaptivePresentationControllerDelegate
. Этот контроллер представления состоит из 2 кнопок и 2 текстовых полей. Поэтому, когда я хочу нажать кнопку «Сохранить», я хочу перейти к первому контроллеру представления (списку представлений коллекции), а когда нажать «Отмена», вернуться ко второму контроллеру представления.
Контроллеры представления создаются с помощью метода pushViewController.
Пожалуйста, помогите, что мне использовать?
затем в PersonViewController я вызываю это редактирование внутренней кнопки.
@objc func editCell(){
let vc = storyboard?.instantiateViewController(identifier:
"ModalPresentationViewController") as?
ModalPresentationViewController
navigationController?.pushViewController(vc!, animated: true)
}
Теперь код в las ViewController, который является ModalViewController
@objc func savePerson(){
if editNameTextfield.text == "" || editlastNameTextfield.text == ""{
self.errorLbl.alpha = 1
}
else{
let vc = ViewController()
guard let textName = editNameTextfield.text else{
return
}
guard let textLastName = editlastNameTextfield.text else{
return
}
let index = PersonViewController.indexes
DispatchQueue.main.async {[self] in
if editDelegate != nil{
self.editDelegate!.editPerson(editedName: textName, editedLastname: textLastName, index: index)
}
}
// What should I call here??
}
}
popToViewController
позволяет вам вернуться к любому контроллеру представления, который вы хотите. developer.apple.com/documentation/uikit/uinavigationcontroller/ - person matt   schedule 08.11.2020popToRootViewController
? Кстати, если вы не используете Segues, это означает, что у вас должно быть достаточно кода, который вы могли бы опубликовать, вместо нарисованного от руки объяснения. Было бы очень полезно фактически дублировать любую проблему, с которой вы столкнулись. Разберитесь — похоже, у вас есть 4 VC... A, B, C и навигационный контроллер. Добавьте минимальную логику/представления к каждому для дублирования. Разместите это. - person dfd   schedule 08.11.2020