gpt4 book ai didi

ios - 不使用 PFQueryTableView 时,从 Parse 加载到 UITableViewController 的数据不均匀

转载 作者:行者123 更新时间:2023-11-29 01:24:18 25 4
gpt4 key购买 nike

我正在使用 UITableViewController 来显示来自 Parse 的数据。它在我的 Xcode 模拟器上运行完美,因为我认为网络没有延迟。但是每当我将代码上传到 AppStore 进行测试时。我第一次运行该应用程序时,它必须从 Parse 加载几个餐厅并显示在 UITableViewController 中。单击一行时,第一行数据将不规则地加载到第 3 行和第 4 行数据中,第 6 行数据加载。为什么数据加载非常不均匀?这是我的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *cellIdentifier = @"restaurantIdentifier";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell == nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

PFObject *tempObject = [self.objectArray objectAtIndex:indexPath.row];

PFFile *imageFile = [tempObject objectForKey:@"RestaurantIcon"];
PFImageView *imageView = [[PFImageView alloc] init];
imageView.file = imageFile;

[imageView loadInBackground:^(UIImage *img,NSError *error){

if(!error){
cell.imageCell.image = imageView.image;
}
}];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

cell.imageView.contentMode = UIViewContentModeScaleAspectFit;
cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.cornerRadius = 4;

cell.imageView.frame = self.view.bounds;
cell.cellLabel.text = [tempObject objectForKey:@"RestaurantName"];
[self.hotelNamesArray addObject:[tempObject objectForKey:@"RestaurantName"]];

cell.cellLabel.lineBreakMode = NSLineBreakByWordWrapping;

return cell;
}




- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

_restaurantName = [self.hotelNamesArray objectAtIndex:indexPath.row];

self.restaurantMenuNameArray = [[NSMutableArray alloc] init];

PFQuery *query = [PFQuery queryWithClassName:[self.hotelNamesArray objectAtIndex:indexPath.row]];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

if (!error) {
for (PFObject *obj in objects) {

if (![_restaurantMenuNameArray containsObject:[obj objectForKey:@"RestaurantMenuName"]]) {

NSLog(@"restaurantmenunames are %@",[obj objectForKey:@"RestaurantMenuName"]);

if ([obj objectForKey:@"RestaurantMenuName"] ==nil) {
[self performSegueWithIdentifier:@"restaurantDetail" sender:self];
return;
}else {
[_restaurantMenuNameArray addObject: [obj objectForKey:@"RestaurantMenuName"]];
}
}
}
}else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
[self.tableView reloadData];
NSLog(@"restaurantMenuNames is %@",_restaurantMenuNameArray);
[self performSegueWithIdentifier:@"restaurantDetail" sender:self];
}];
}

提前致谢。

最佳答案

如果你的意思是图像进入错误的单元格,你必须考虑滚动时单元格被回收,并且如果图像加载时间太长,你可能会在单元格被重新使用后得到结果。

您需要检查单元格是否仍然是您想要的项目/行(您可以将该行存储在单元格的 tag 中并在完成处理程序中设置图像之前检查它,例如).

如果混淆了其他数据,那么您需要向我们展示加载该数据的代码。

关于ios - 不使用 PFQueryTableView 时,从 Parse 加载到 UITableViewController 的数据不均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34196700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com