Использовать существующий переход от другого действия

У меня есть две кнопки - "Ок" и "Удалить", причем "Ок" отматывает переход к последнему ViewController.

Я хочу, чтобы кнопка «Удалить» запускала тот же самый этап раскрутки, но заранее выполняла какое-то действие. (В моем случае удалите информацию из Firebase).

Как я могу совместить действие и раскрутить переход? Я попытался вызвать функцию PerformSegueWithIdentifier, но это не сработало.


person MathEnthusiast    schedule 11.02.2018    source источник


Ответы (1)


Создайте второй переход назад, control перетащив его от кнопки Удалить к значку Выход. Вы даже можете использовать существующий @IBAction в целевом viewController. Дайте этому переходу идентификатор (выберите переход в представлении Структура документа и установите идентификатор в Инспекторе атрибутов), например "deleteSegue", а затем в prepare(for:sender) проверьте идентификатор и удалите информация из Firebase.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "deleteSegue" {
        // delete data from Firebase
    }
}

Дополнительный вопрос из комментариев:

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

Вместо того, чтобы связать переход отката с кнопки Удалить, свяжите его со значка viewController в верхней части VC со значком Выход. По-прежнему дайте ему идентификатор, а затем вызовите performSegue(withIdentifier: "deleteSegue", sender: self), когда вы хотите выполнить переход.

person vacawama    schedule 11.02.2018
comment
Я попробую это через мгновение, я только что столкнулся с фатальной ошибкой, которую пытаюсь отладить. Я удалил файл .swift и изменил класс представления из удаленного файла на другой, и я вижу, что при загрузке этого представления происходит сбой... Есть идеи, что вызывает это? - person MathEnthusiast; 11.02.2018
comment
Возможно, вам не хватает разъема для подключения к розетке. Проверьте консоль на наличие сообщения. Возможно, вы захотите добавить точку останова исключения в инспекторе точек останова. - person vacawama; 11.02.2018
comment
Мне нужно научиться использовать консоль отладки :) Я новичок в Xcode, поэтому я еще изучаю способы отладки. Я забыл указать идентификатор UICollectionViewCell. Упс! Исправлено сейчас :) Позвольте мне попробовать ваше решение моей проблемы - person MathEnthusiast; 12.02.2018
comment
Хорошо, я снова прочитал ваше решение, и есть проблема. Я хочу выполнить действие ДО раскручивания перехода - я хочу, чтобы всплывающее окно спрашивало пользователя, действительно ли он хочет удалить элемент. только после этого я хочу, чтобы элемент был удален и раскручен. - person MathEnthusiast; 12.02.2018
comment
Вместо того, чтобы связывать переход отката с кнопки «Удалить», подключите его от значка viewController в верхней части VC к значку выхода. По-прежнему дайте ему идентификатор, а затем вызовите performSegue(withIdentifier: "deleteSegue", sender: self), когда вы хотите выполнить переход. - person vacawama; 12.02.2018