在iPhone应用程序中显示加载屏幕的最佳方式?

时间:2010-04-08 23:58:39

标签: iphone cocoa-touch

我正在构建基本上是一个Web应用程序。每个数据都必须从Web API中获取。因此,我展示的每个UITableView都需要花费一些时间来填充数据,我很难找到向用户显示加载屏幕的好方法。

现在我正在弹出一张活动表,但这看起来有点不对劲。理想情况下,我会在桌面上弹出一个空白视图,上面有“正在加载...”,然后在数据进入时将其淡出,但我想不出在我的8个地方做到这一点的方法没有大量代码重复的应用程序。

2 个答案:

答案 0 :(得分:13)

根据我的说法,你有两种选择。

  1. 使用alertview
  2. 使用MBProgressHUD。

    • 对于alertView您必须在.h文件中放置UIAlertView变量。 然后放置以下代码 - 当您请求/加载数据时。

      av=[[UIAlertView alloc] initWithTitle:@"Loading Data" message:@"" delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
      ActInd=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
      [ActInd startAnimating];
      [ActInd setFrame:CGRectMake(125, 60, 37, 37)];
      [av addSubview:ActInd];
      [av show];

    现在,在完成处理后放置以下声明。

    [av dismissWithClickedButtonIndex:0 animated:YES];
    [av release]; av=nil;

    • 另一种方法是使用MBProgressHUD
    • 这是非常有用的&为您做好准备 - 您只需按照以下步骤操作即可。

    1. 从指定链接下载
    2. 将两个文件导入您的项目(复制而非链接)
    3. #import "MBProgressHUD.h" - 将您导入到要使用进度视图的位置。
    4. MBProgressHUD *mbProcess; - 在* .h文件中声明一个变量。
    5. 处理时(在* .m文件中)放置以下代码
    6. mbProcess=[[MBProgressHUD alloc] initWithView:self.view];
      mbProcess.labelText=@"Loading Data";
      [self.view addSubview:mbProcess];
      [mbProcess setDelegate:self];
      [mbProcess show:YES];

      1. 完成处理后,请放置此行。 [mbProcess hide:YES];
      2. 不要忘记在* .m文件中添加MBProgressHUD的委托方法。像这样
      3. #pragma mark -
        #pragma mark MBProgressHUDDelegate methods

        - (void)hudWasHidden {
            // Remove HUD from screen when the HUD was hidded
            [mbProcess removeFromSuperview];
            [mbProcess release];
        }
        

答案 1 :(得分:6)

如果你想要一个漂亮的微调器,请看http://github.com/matej/MBProgressHUD