2010-07-19 2 views
0

Я использовал для отображения заставки, которые в фоновом режиме загружают некоторые данные из Интернета, я также проверю, что если местоположение пользователя изменено из одного города в другой город, я хочу показать в предупреждении о пользователь с сообщением, что вы сейчас находитесь в «CityName», хотите посмотреть данные из этого города?Показать UIAlertView на заставке

У меня есть приложение с вкладками, и я представил заставку, как показано в классе делегата приложения.

SplashViewController *controller = [[SplashViewController alloc] initWithNibName:nil bundle:nil]; 
tabBarController.view.frame = [[UIScreen mainScreen] bounds]; 
controller.tabBarController = self.tabBarController; 
[application setStatusBarStyle:UIStatusBarStyleBlackOpaque]; 
[window addSubview:controller.view ]; 
//[window addSubview:tabBarController.view ]; 

[self.tabBarController presentModalViewController:controller animated:YES]; 
[window makeKeyAndVisible]; 
[controller release]; 

Теперь, когда я показываю на экран предупреждения его зависание приложения с сообщением «EXC_BAD_ACCESS» и стека трассировки показывают, что _buttonClick выделяется в классе UIAlertView.

Пожалуйста, сообщите, что мне делать, я также попробовал с UIActionSheet, но с этой проблемой тоже.

Я думаю, что есть некоторые проблемы с моделью с текущим представлением (SplashView).

Заранее спасибо.

+0

ли моя стратегия не так? Я не должен определять местоположение пользователя и извлекать данные из Интернета на экран заставки? –

ответ

0

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

[self.tabBarController presentModalViewController: контроллер анимации: YES];

, что я сделал, что я переместил загрузки данных на другой контроллер зрения и там я могу показать предупреждения, и может справиться с этим

0

Вы пытаетесь отобразить свой UIAlertView внутри вашего SplashViewController viewDidAppear? Если нет, я бы попробовал это первым. Я также хотел бы убедиться, что вы правильно настроили ваш метод UAlertViewButtonAtIndex, чтобы попытаться поймать то, что происходит.

UIAlertView *alert = [[UIAlertView alloc] 
    initWithTitle:@"Your Location Has Changed" 
    message:@"Your location has changed since you last opened opened THEAPP. Would you like to refresh your data?" delegate:self 
    cancelButtonTitle:@"Cancel" 
    otherButtonTitles:@"OK", nil]; 
alert.tag = 1; 
[alert show]; 
[alert autorelease]; 

Тогда для метода clickedButtonAtIndex:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

    //--NSLog(@"You clicked button #%i",buttonIndex); 

    if (alertView.tag == 1){ 

     if (buttonIndex == 0) { 
      //--NSLog(@"CANCEL"); 

     } else if (buttonIndex == 1) { 
      //--NSLog(@"OK"); 

     } 
    } 
} 

Делая все это на экране заставки должно быть хорошо до тех пор, пока вы принимаете во внимание требования HIG для использования местоположения пользователей. Надеюсь это поможет!

+0

Я все еще получаю ошибку! единственное отличие, которое я делал, это освободить оповещение, и вы делаете это как автореферат ... Чтобы воспроизвести, я думаю, вам нужно открыть представление presentModalViewController, а затем показать предупреждение в этом открытом представлении, то же самое будет происходить –

Смежные вопросы