0

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

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

在 UITableView 上方添加一个 UIView。

在此处输入图像描述

4

4 回答 4

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];

如果您使用 Storyboard... 只需将 aUIView拖到您的 上UIViewController,确保其位于 上方UITableView(它不需要是 的子视图UITableView)。拖动您的UIActivityIndicatorViewUILabel,然后为UIView.

然后在你的viewWillAppear

[_loadingView setHidden NO];

然后当你完成加载

[_loadingView setHidden YES];
于 2013-10-31T14:15:57.213 回答
1

我可以建议您使用MBProgressHUD。您显示您的视图并显示加载指示器。然后在后台线程中,加载您的数据。完成后,更新您的数据源,刷新您的表格视图,并关闭加载指示器。

于 2013-10-31T13:58:52.943 回答
0

看看UIRefreshControl是一种很好的原生方式。

于 2013-10-31T13:52:45.170 回答
0

将表视图的加载分派到另一个线程。现在呈现“加载”视图(视图不是视图控制器)。一旦您在另一个线程上的加载结束,请关闭“加载”视图。

于 2013-10-31T14:02:24.363 回答