UIAlertView без каких-либо кнопок - PullRequest
3 голосов
/ 20 сентября 2011

Я хотел знать, в порядке ли следующий код или нет. Я пытаюсь автоматически отключить alertView через 2 секунды (и без каких-либо кнопок в alertView) из метода timedAlert.

    //this is in another method  
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Login successful." delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
    [alert show];
    [alert release];
    [self timedAlert];
}

-(void)timedAlert
{
    [self performSelector:@selector(dismissAlert:) withObject:alert afterDelay:2];
}

-(void)dismissAlert:(UIAlertView *) alertView
{
    [alertView dismissWithClickedButtonIndex:nil animated:YES];
}

Если параметр cancelButton alertView имеет значение «nil», как будет «[alertView dismissWithClickedButtonIndex: 0 animated: YES];» вещь работает ??? Я пытался сделать cancelButton "ноль", и это сработало, но не могу понять, как ....

P.S: я вызываю метод timedAlert из другого

Любая помощь приветствуется! Спасибо!

Ответы [ 2 ]

4 голосов
/ 21 сентября 2011

Во-первых, позвольте мне сказать, что было бы лучше, если бы вы обрабатывали это с помощью пользовательского представления, но с учетом сказанного проблема выглядит как с

[alert release];

Вы отпускаете объект, прежде чем закончите с ним (я удивлен, что он не падает).

Сделай что-нибудь подобное

// other code
alert = [[UIAlertView alloc] initWithTitle:nil message:@"Login successful." delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
    [alert show];
    [self performSelector:@selector(dismissAlert:) withObject:alert afterDelay:3.0f];
}

-(void)dismissAlert:(UIAlertView *) alertView
{
    [alertView dismissWithClickedButtonIndex:nil animated:YES];
    [alertView release];
}
1 голос
/ 20 сентября 2011

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

...