如何在tableView之前添加“加载”视图控制器

时间:2013-10-31 13:50:49

标签: ios objective-c uitableview uiactivityindicatorview

我希望在我的tableView加载之前有一个“加载”视图控制器。你能否推荐最好的方法,如果可能的话,提供一些代码。

理想情况下,加载屏幕会显示一个活动指示和一个表示加载的标签。

在UITableView上方添加UIView。

enter image description here

4 个答案:

答案 0 :(得分:5)

首先在你的.h

中定义这些
@property (strong, nonatomic) UIView *loadingView;

然后在viewWillAppear中,在开始加载表格视图数据之前,制作并显示视图:

if(!_loadingView)
{
    _loadingView = [[UIView alloc] initWithFrame:self.view.frame];
    [loadingView setBackgroundColor:[UIColor lightGrayColor]];

    UIActivityIndicatorView *actInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    [actInd setFrame:CGRectMake((loadingView.frame.size.width / 2 - 10), (loadingView.frame.size.height / 2 - 10), 20, 20)];

    UILabel *lblLoading = [[UILabel alloc] initWithFrame:CGRectMake((_loadingView.frame.size.width / 2 - 30), (_loadingView.frame.size.height / 2 - 5), 60, 30)];
    lblLoading.text = @"Loading";

    // you will probably need to adjust those frame values to get it centered    

    [loadingView addSubview:actInd];
    [loadingView addSubview:lblLoading];

    [actInd startAnimating];
} 

[_yourTableView addSubview:_loadingView];

然后当您完成加载数据时:

[_loadingView removeFromSuperView];

如果您使用故事板...只需将UIView拖到UIViewController上,确保其分层在UITableView上方(它不需要是{{{}}的子视图1}})。拖动UITableViewUIActivityIndicatorView,然后为UILabel创建一个插座。

然后在UIView

viewWillAppear

然后当你完成加载

[_loadingView setHidden NO];

答案 1 :(得分:1)

我建议你使用MBProgressHUD。您显示视图并显示加载指示器。然后在反向线程中加载数据。完成后,更新数据库,刷新工作台视图,并关闭加载指示器。

答案 2 :(得分:0)

看看UIRefreshControl是一种很好的方式来做这件事。

答案 3 :(得分:0)

将表视图的加载分派给另一个线程。现在显示“加载”视图(视图不是视图控制器)。一旦你在另一个线程上的加载结束,就关闭'loading'视图。