Как вы отклоняете UIActionSheet из делегата приложения?

#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. Из контроллера представления. Я отправлю его. Большое спасибо.