#ios #swift
#iOS #swift
Вопрос:
Я нахожусь в процессе реализации кнопки отмены для одного из моих контроллеров просмотра. Этот контроллер представления может быть либо показан, либо представлен модально. Кнопка отмены отлично работает, когда показан контроллер просмотра, но она не оказывает никакого эффекта, когда VC был представлен модально. У меня есть строка кода для моей кнопки отмены:
let isPresentingInAddRoutineMode = presentingViewController is UINavigationController
Предполагается, что эта строка кода определяет, был ли VC показан или представлен. Я получил строку с веб-сайта Apple development. Затем в функции отмены он читает:
if isPresentingInAddRoutineMode {
dismiss(animated: true, completion: nil)
}
Согласно веб-сайту, переменная должна иметь значение true, поскольку VC был представлен модально (переход в раскадровке гласит, что присутствует модально). Я попытался выполнить отладку, чтобы увидеть, возвращает ли логическое значение true, но это не так. Я очень смущен этим и был бы очень признателен, если бы у кого-нибудь были какие-либо идеи, что я здесь сделал не так.
Спасибо.
Комментарии:
1. «Предполагается, что эта строка кода определяет, был ли VC показан или представлен» — нет, эта строка кода проверяет, является ли
presentingViewController
навигационный контроллер или нет.2. @rmaddy Извините, что я плохо объяснил. Кнопка, которая модально отображает контроллер просмотра, встроена в навигационный контроллер, поэтому строка кода определяет, был ли текущий просмотр доставлен через навигационный контроллер (модально) или с помощью другой кнопки (показано).
Ответ №1:
Возможно, это могло бы быть полезно вместо: isBeingPresented
От:https://developer.apple.com/documentation/uikit/uiviewcontroller/2097564-isbeingpresented
Комментарии:
1. Хорошо, я попробовал это в функции кнопки отмены. Отладчик возвращает false. Знаете ли вы, почему он выдает false, когда контроллер просмотра отображается на экране?
2.
isBeingPresented
может использоваться только одним изview[Will|Did][Disa|A]ppear
методов.