0

我真的被我遇到的这个问题难住了。

所以我们有一个应用程序允许用户将一些照片同步到我们的服务器。所以我通过 dispath_async 调用完成了它并且它工作,但是我想告诉用户它是否已经成功完成天气。

所以我的问题是我如何向用户显示一个 AlertDialog 框,当我不知道他们将在什么视图上时(因为它是异步的,我不希望他们必须留在那个 ViewController 上,而是在应用程序中移动并执行正在上传的其他内容)。

我试过了:

[self showAlertView];
但这会使应用程序崩溃,因为我不再处于该视图中。

比我试过的:

dispatch_async(dispatch_get_main_queue(), ^{
    UIAlertView* alert = [UIAlertView withTitle ....]; // 你明白了,只需创建一个简单的 AlertView
    [警报显示];// 也尝试过:[alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO]; 在这里,那也不起作用
});

哦,LocalNotifications 不起作用,因为如果它们在应用程序中,它就不会显示(Android 在这方面有 iOS 优势,当用户也在应用程序中时,让它工作会容易得多,那么我就不必担心所有这些)。

关于如何实现我的目标的任何想法。

4

2 回答 2

4

即使应用程序在前台运行,您也可以使用UILocalNotification,但您必须自己处理通知。您可以只显示一个简单的 AlertView。

只需将其添加到应用委托类:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:notification.alertBody message:nil delegate:nil cancelButtonTitle:@"Oke" otherButtonTitles:nil];
    [alert show];

}
于 2013-08-22T14:00:28.913 回答
0

您可以通过应用程序的窗口访问控制器,在当前控制器上显示模式视图。

UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIViewController *controller = window.rootViewController;
// Use controller to display your window.
于 2013-08-22T14:09:38.600 回答