#iphone #uiactionsheet #uiapplicationdelegate #dismiss
#iPhone #uiactionsheet #uiapplicationdelegate #отклонить
Вопрос:
Я пытаюсь отключить UIActionSheet от делегата приложения, чтобы он больше не отображался при возврате из фонового режима. Я пытался отклонить таблицу действий из методов viewDidUnload
or viewDidDisappear
в контроллере представления подкласса, но, похоже, это не вызывается при фоновом режиме приложения.
Поэтому я пытаюсь использовать делегат приложения для отклонения любого UIActionSheet
, который может отображаться при фоновом режиме приложения. Но я не могу понять, что вызывать. У кого-нибудь есть решение? Или лучшая идея для выполнения того же самого?
Спасибо.
Комментарии:
1. Вместо этого вы можете отклонить свой ActionSheet в методе viewWillAppear
2. Это тоже не работает. Ни viewDidAppear.
3. скажите мне кое-что, есть ли у вас этот
UIActionSheet
объект в качестве переменной экземпляра вашего класса или нет4. Да, я делаю, но как мне получить эту переменную из делегата приложения?
Ответ №1:
@Dylan что вы можете сделать, так это объявить свойство для вашей переменной uiactionsheet, а также синтезировать его.
Затем в appdelegate в методе applicationDidBecomeActive вы можете отклонить этот actionsheet, вызвав метод dismiss, выполнив что-то вроде этого [viewController.actionSheet dismissWithClickedButtonIndex:0 animated:NO]
. Предполагая, что у вас есть ссылка в вашем appdelegate.
Но если нет, то вы можете найти все UIViews, отображаемые поверх uiwindow, а затем проверить, является ли какой-либо из uiviews типом класса, который показывает actionsheet. После этого вы можете отклонить actionsheet, выполнив то же самое, что написано выше, как только вы получите доступ к тому ViewController, который показывает actionsheet.
Комментарии:
1. Спасибо! Сработало отлично! Я только что нашел ViewController, в котором отображался actionsheet, как вы сказали, и отклонил его, выполнив
actionSheetCancel
. Я ценю это.
Ответ №2:
попробуйте отклонить в applicationDidBecomeActive
методе appDelegate
.
Комментарии:
1. Прочитайте ссылку на класс UIActionSheet вот метод, который // скрывает лист оповещения или всплывающее окно. используйте этот метод, когда вам нужно явно отклонить предупреждение. // его не нужно вызывать, если пользователь нажимает на кнопку — (void)Отклоняет с помощью clickedbuttonindex:(NSInteger)buttonIndex animated:(BOOL)animated Вызовите этот метод с помощью вашего объекта ActionSheet.
2. убедитесь, что у вас есть доступ к экземпляру action sheet
3. Как бы я это назвал? И как мне получить доступ? Проблема в том, что я знаю, как использовать dismissswithclickedbuttonindex и actionSheetCancel (проще в использовании), но я не могу получить доступ к моей таблице действий из делегата приложения. Если бы я мог, это был бы простой ответ. Есть мысли о том, как это сделать?
4. Откуда отображается ваш список действий? из ViewController или из AppDelegate? если вы можете отправить свой код, я рассмотрю проблему.
5. Из контроллера представления. Я отправлю его. Большое спасибо.