在alertView回调问题中popToRootViewControllerAnimated

时间:2011-05-06 16:25:02

标签: iphone objective-c ios

我的应用程序中有一个数据下载过程,该过程由按钮单击启动。该操作发生在后台线程上,因此用户可以自由地导航到其他视图并按照自己的喜好进行操作。

下载完成后,会向用户显示警告,说明需要重新加载该应用。单击“确定”后,将运行alertView clickedButtonAtIndex方法。在这个方法中我调用popToRootViewControllerAnimated。

如果我没有导航到其他视图,并且保持用户发起下载的视图,这可行!!问题是,如果用户已离开下载启动的视图并在“重新加载应用程序”警报上单击“确定”,则不会发生任何事情。用户不会重定向回根视图控制器。它只是留在原地......

有人可以帮忙吗?我是以错误的方式接近这个吗?我需要一个重启应用程序或返回我的根视图控制器的进程,无论用户在单击下载按钮后导航到何处。

最糟糕的情况我只会关闭应用程序并告诉用户他们需要重新启动才能应用更新。我宁愿避开这个并允许用户留在应用程序中。

感谢您的帮助。

更新:

以下是所要求的代码:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex != 0) {
    //User indicated that they want to restart the app so that they can apply the update

    cameFrom = CAME_FROM_RESTART;

    [self.navigationController popToRootViewControllerAnimated:NO]; 


     }

2 个答案:

答案 0 :(得分:2)

您可以使用setViewController:animated:而不是popToRootViewControllerAnimated。当最后一个对我不起作用时,我使用setViewController:animated:and works。我最后一次使用带有动画YES的setViewController,它会出错。转发。如果您碰巧尝试使用动画:否

答案 1 :(得分:1)

您也可以尝试将通知设置为发送到您的单例应用程序委托,该委托在下载完成或单击按钮时调用,或者其他任何内容。然后在此回调中,您可以重新加载到您想要的任何视图控制器。