Доступ ко всем объектам UIAlertView как к глобальному объекту для универсального управления им (для разрешения CRASH в предупреждении после освобождения контроллера представления)

Мое требование состоит в том, чтобы сделать третью вкладку моего приложения домашним экраном, а также всякий раз, когда пользователь перемещает приложение в фоновом режиме, и при повторном перемещении приложения на передний план это должен быть домашний экран в качестве третьей вкладки, а приложение находится в любом из места в приложении. Эта проблема решена (создание третьей вкладки в качестве домашнего экрана вместо приложения в любом месте / сценарии в приложении). Но у меня сейчас есть проблема, которая генерируется этим разрешением.

Проблема:- Если какое-либо предупреждение отображается в каком-либо виде, и мы создаем фон приложения на переднем плане, приложение переходит на третью вкладку с этого экрана, и предупреждение все еще там, и если мы нажимаем на кнопку предупреждения, то согласно По правилам IOS "сам" объект экрана оповещения освобождается (потому что теперь мы на главном экране, а оповещение здесь) и приложение CRASHES!

Пробовал несколько резолюций:

1. На экране я создал глобальный объект UIAlertView и использовал следующую строку кода в методе applicationDidBecomeActive объекта Screen...

[_alertToRemoveContact dismissWithClickedButtonIndex: 1 animated: NO];

Это рабочий код для этого представления, но моя проблема с разрешением заключается в том, что мне нужно создать глобальный объект представления предупреждений во всех местах приложения, что является очень трудоемкой задачей, поскольку я использую в проекте около 250 предупреждений.

2. Я убиваю приложение всякий раз, когда оно переходит в фоновый режим. В этом разрешении проблема заключается в том, что мое приложение не будет работать с функциями загрузки в фоновом режиме, потому что приложение будет убито.

Нужна помощь для решения этой проблемы, если кому-то нужно больше объяснений, пожалуйста, оставьте комментарии.

Мой журнал сбоев.... * - [ContactShowViewController RespondsToSelector:]: сообщение отправлено освобожденному экземпляру 0x1138c4e0 *

* Где ContactShowViewController будет отличаться /c на экране Спасибо заранее!!!

2 ответа

Решение

Я решил эту проблему с помощью решения ниже: -

1. Я создал экземпляр делегата приложения UIAlertView.

2.Я реализовал метод делегата представления оповещения "представит представление оповещения...", этот метод предоставляет мне все объекты представления оповещения в качестве параметра, где я назначил его объекту делегата приложения представления оповещения.

3.В методе жизненного цикла приложения applicationDidEnterBackground я использую приведенный ниже код..., который отказывается от моего предупреждения при переходе с фона на передний план...

if ([AppDelegate shared].alertObserver) {

  //Dismissing alert which was shown before moving to background

    [[AppDelegate shared].alertObserver dismissWithClickedButtonIndex:0 animated:NO];
    [AppDelegate shared].alertObserver=nil;
}

Давайте попробуем синглтон:

__strong static AlertUtil* _sharedInstance = nil;
@implementation AlertUtil
{
UIAlertView *alertView;
}
+ (AlertUtil *)sharedInstance
{
@synchronized(self)
{
    if (nil == _sharedInstance)
    {
        _sharedInstance = [[AlertUtil alloc] init];
    }
}
return _sharedInstance;
}
- (void)showConfirmAlertWithMessage:(NSString *)msg cancelBtnTitle:(NSString *)btn1 okbtnTitle:(NSString *)btn2 delegate:(id)delegate tag:(int)tag
{
alertView = [[UIAlertView alloc] initWithTitle:nil message:msg delegate:delegate cancelButtonTitle:btn1 otherButtonTitles:btn2, nil];
alertView.tag = tag;
[alertView show];
}
- (void)cancel
{
if (alertView){
    [alertView dismissWithClickedButtonIndex:0 animated:NO];
}
}
Другие вопросы по тегам