Я занимаюсь разработкой этого приложения для iPhone, которое имеет базовые функции входа и выхода Требуется выполнить действие выхода из системы, как показано ниже.
- Сначала получите подтверждение пользователя с помощью UIAlertView
- Показать окно предупреждения о выходе из системы во время обработки выхода из системы на серверах
Логика сервера еще не реализована, но я столкнулся с проблемой при отображении этого второго окна предупреждения. Проблема в том, что окно предупреждения не отображается, и вместо этого основной поток просто переходит в спящий режим и переходит к контроллеру корневого представления. Может ли кто-нибудь помочь мне с этой проблемой.
Ниже приведен мой код:
Действие выхода из системы:
-(IBAction)logOut
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Really Want to Log Out?"
message:@"If you continue you will be redirected to Home page,
where you have to sign in again. \n\nContinue?"
delegate:self cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Continue", nil];
[alert show];
[alert release];
}
Ввод пользователя (какую кнопку он нажал) будет обрабатываться следующим образом ...
-(void)alertView:(UIAlertView *) actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1) {
[NSThread detachNewThreadSelector:@selector(dataProcessor)
toTarget:self withObject:nil];
[NSThread sleepForTimeInterval:3];
[self.navigationController popToRootViewControllerAnimated:YES];
} else {
// do nothing
}
}
И dataProcessor () реализован следующим образом:
-(void)dataProcessor {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Signing out...\n\nPlease Wait..."
message:nil delegate:self cancelButtonTitle:nil
otherButtonTitles: nil] autorelease];
[alert show];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.center = CGPointMake(alert.bounds.size.width / 2,
alert.bounds.size.height - 50);
[indicator startAnimating];
[alert addSubview:indicator];
[indicator release];
[alert dismissWithClickedButtonIndex:0 animated:YES];
[pool release];
}
Когда я использую этот подход, это предупреждение с UIActivityIndicator не отображается. Происходит следующее: контроллер приветствия отключается (я думаю, это из-за [NSThread sleepForTimeInterval: 3];) и возвращается к контроллеру корневого представления.
Также я попытался использовать тег с оповещениями, как упоминалось в этом сообщении Показать оповещение в clickedButtonAtIndex? Но все равно я не могу заставить это работать.
Пожалуйста, кто-нибудь может мне помочь? Заранее спасибо.