开发者社区> 问答> 正文

关于加载UITableViewController

从web-services加载数据,然后插入到UITableViewController中。

我已经实现了,就是有一个小问题,在转入UITableViewController之前会在第一个UIView中停留一会儿。如果网速慢的话会停留很长时间。

能不能显示空的UITableViewController,用loading标志代替?然后只显示从web-services提取数据,重载table。

调用web-services函数:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self._completeList = [ [NSMutableArray alloc]init];
    self._completeList = [self getListFromWebServices];
}

展开
收起
爵霸 2016-03-17 14:10:08 2194 0
1 条回答
写回答
取消 提交回答
  • 最简单的方法是删除这两行代码 into -(void)viewDidAppear:

    - (void)viewDidLoad {
      [super viewDidLoad];
      self._completeList = [[NSMutableArray alloc]init];
    }
    - (void)viewDidAppear:(BOOL)animated {
      [super viewDidAppear:animated]; 
      self._completeList = [self getListFromWebServices];
      // Assuming that [self getListFromWebServices] is a blocking call.
      [self.tableView reloadData];
    }

    但是我建议使用 GCD:

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) { 
          _completeList = [[NSMutableArray alloc] init];
          dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            self._completeList = [self getListFromWebServices];
            dispatch_async(dispatch_get_main_queue(), ^{
                [self.tableView reloadData];
            });
          });
        }
        return self;
    }
    2019-07-17 19:05:19
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载