我想在我的 tableView 加载之前有一个“正在加载”的视图控制器。你能推荐最好的方法吗?如果可能的话,提供一些代码。
理想情况下,加载屏幕将有一个活动指示和一个表示加载的标签。
在 UITableView 上方添加一个 UIView。
我想在我的 tableView 加载之前有一个“正在加载”的视图控制器。你能推荐最好的方法吗?如果可能的话,提供一些代码。
理想情况下,加载屏幕将有一个活动指示和一个表示加载的标签。
在 UITableView 上方添加一个 UIView。
首先在你的 .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
)。拖动您的UIActivityIndicatorView
和UILabel
,然后为UIView
.
然后在你的viewWillAppear
[_loadingView setHidden NO];
然后当你完成加载
[_loadingView setHidden YES];
我可以建议您使用MBProgressHUD。您显示您的视图并显示加载指示器。然后在后台线程中,加载您的数据。完成后,更新您的数据源,刷新您的表格视图,并关闭加载指示器。
看看UIRefreshControl是一种很好的原生方式。
将表视图的加载分派到另一个线程。现在呈现“加载”视图(视图不是视图控制器)。一旦您在另一个线程上的加载结束,请关闭“加载”视图。