在启动画面上显示UIAlertView

时间:2010-07-19 20:45:33

标签: iphone uialertview splash-screen

我曾经在后台显示一个启动画面,在后台加载来自网络的一些数据,我还检查如果用户的位置从一个城市更改为另一个城市我想要向用户显示警告,并显示消息你现在在“CityName”你想看看这个城市的数据吗?

我有标签应用程序,我在应用程序委托类中显示了如下的启动画面。

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)的模型事物存在一些问题。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试在SplashViewController viewDidAppear中显示您的UIAlertView?如果没有,我会先尝试。我还要确保您正确设置了UIAlertView clickedButtonAtIndex方法,以尝试捕获正在发生的事情。

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使用用户位置的要求,在启动画面上执行所有这些操作就应该没问题。希望这有帮助!

答案 1 :(得分:0)

我解决了这个问题,问题是我的Splash View是一个建模视图,并由

调用

[self.tabBarController presentModalViewController:controller animated:YES];

我做了什么,我将数据下载转移到另一个视图控制器,在那里我可以显示警报,并可以处理