在我的例子中,我在选项卡栏 Controller (类别和主页)中有两个 View ,一个带有 Collection View ,一个带有表格 View 。
在表格 View 中,只有用户在其标签栏项目上点击(主页)时,它才会开始加载数据。我想在应用程序启动时加载数据。我正在使用 AFNetworking
,我已经在 viewDidLoad 中调用了我的数据加载方法。 Collection View 也发生了同样的事情。请帮我解决这个问题。希望你的帮助谢谢。我附上了我用来将数据加载到 TableView 的部分代码。
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.homeTableView];
// [self homeviewData];
SWRevealViewController *revealController = self.revealViewController;
if (revealController) {
[self.sidebarButton setTarget:self.revealViewController];
[self.sidebarButton setAction:@selector(revealToggle:)];
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}
// Do any additional setup after loading the view.
}
- (void)viewWillAppear:(BOOL)animated
{
[self homeTableView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)homeviewData
{
homepost = nil;
NSString *mogohomeWebserviceUrl = [NSString stringWithFormat:@"some url"];
AFHTTPRequestOperationManager *homeManager = [AFHTTPRequestOperationManager manager];
[homeManager GET:mogohomeWebserviceUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
homeposts = (NSDictionary *)responseObject;
homepost = [NSMutableArray array];
NSArray *results = [homeposts objectForKey:@"posts"];
for (NSDictionary *all in results)
{
Home *sweetHome = [Home new];
sweetHome.homeImage = [NSString stringWithFormat:@"%@", [all objectForKey:@"thumbnail"]];
sweetHome.homeTitle = [NSString stringWithFormat:@"%@", [all objectForKey:@"title"]];
sweetHome.homewebUrl = [NSString stringWithFormat:@"%@", [all objectForKey:@"url"]];
sweetHome.modifiedTime = [NSString stringWithFormat:@"%@", [all objectForKey:@"modified"]];
[homepost addObject:sweetHome];
[self.homeTableView reloadData];
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [homepost count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
HomeTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"homereuseIdentifier"];
Home *mogoHome = [homepost objectAtIndex:indexPath.row];
NSString *homeimageurlname = [NSString stringWithFormat:@"%@", mogoHome.homeImage];
NSURL *homeimageurl = [NSURL URLWithString:homeimageurlname];
cell.hometitleLabel.text = mogoHome.homeTitle;
[cell.homeimageView setImageWithURL:homeimageurl placeholderImage:nil];
cell.timeLabel.text = [[mogoHome.modifiedTime componentsSeparatedByString:@" "] objectAtIndex:1];
return cell;
}
最佳答案
您必须明白,只有在 API 请求获取数据完成后,数据才会被加载和显示...
这意味着您应该在屏幕出现之前准备好数据。这只有在数据独立于用户操作或主数据时才有可能,并且您可以在应用程序启动时直接获取它。如果用户操作对获取的数据负责,您别无选择,只能等待并显示事件指示器。如果您决定这样做,您会找到有关如何做的相关答案。
一切顺利...
关于ios - 如何在用户看到 ios View 之前加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514706/