Я хотел бы найти способ, чтобы, если пользователь нажимает кнопку «Отмена» (которая, как я считаю, не может быть удалена) в ABPeoplePickerNavigationController
, контроллер вида либо не делает «закрыть» или автоматически откроется снова.Swift: Предотвращение закрытия ABPeoplePickerNavigationController
Например, учитывая следующее:
var picker = ABPeoplePickerNavigationController()
picker.peoplePickerDelegate = self
self.presentViewController(picker, animated: true, completion: nil)
Я хотел бы быть в состоянии сделать что-то вроде:
if (self.presentedViewController != picker && !userContinuedPastPicker) {
//where userContinuedPastPicker is a boolean set to false
//in a delegate method called when the user clicks on an a contact
//(meaning the user didn't press the cancel button but instead clicked on a contact)
//create and present a UIAlertAction informing the user they must select a contact
//present picker again
self.presentViewController(picker, animated: true, completion: nil)
}
Это не работает; однако, поскольку оператор if
не будет «ждать», пока пользователь не нажмет кнопку отмены или не нажмет контакт.
Это похоже на то, что мне нужно! Однако, когда я пытаюсь представить другой экземпляр 'ABPPNC' или' UIAlertController' (как вы так разумно предложили), я получаю сообщение об ошибке: 'Предупреждение: попытка представить в чей вид не находится в иерархии окон! ' –
Randoms
Я предполагаю, что вы представляете предупреждение, когда пользователь выбирает анимацию с экрана. Попробуйте обернуть элемент currentViewController для предупреждения в диспетчере_после http://stackoverflow.com/questions/24034544/dispatch-after-gcd-in-swift – esthepiking