我希望在我的tableView加载之前有一个“加载”视图控制器。你能否推荐最好的方法,如果可能的话,提供一些代码。
理想情况下,加载屏幕会显示一个活动指示和一个表示加载的标签。
在UITableView上方添加UIView。
答案 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}})。拖动UITableView
和UIActivityIndicatorView
,然后为UILabel
创建一个插座。
然后在UIView
viewWillAppear
然后当你完成加载
[_loadingView setHidden NO];
答案 1 :(得分:1)
我建议你使用MBProgressHUD。您显示视图并显示加载指示器。然后在反向线程中加载数据。完成后,更新数据库,刷新工作台视图,并关闭加载指示器。
答案 2 :(得分:0)
看看UIRefreshControl是一种很好的方式来做这件事。
答案 3 :(得分:0)
将表视图的加载分派给另一个线程。现在显示“加载”视图(视图不是视图控制器)。一旦你在另一个线程上的加载结束,就关闭'loading'视图。