gpt4 book ai didi

ios - uitableview] 如何防止用户在数据完全加载之前滚动?

转载 作者:行者123 更新时间:2023-11-29 04:10:41 25 4
gpt4 key购买 nike

我目前正在使用 MBProgressHUD 和 NSURLConnection 处理表格 View 。问题是,例如,当用户位于第 80 行时,当使用较少数据刷新表时,大约只有 10 行存在,该应用程序完全崩溃,因为用户正在查看的行导致释放的第 80 行 -错误的内存访问错误。

我想确保无论用户位于何处,应用程序都不会崩溃。纠正这个问题的最佳方法是什么? :S

最佳答案

@Bergasms 是对的,您的问题与滚动的表格无关,在这种情况下禁用它可能是不明智的(从设计角度来看)。话虽如此,您可以使用 scrollEnabled属性并将其设置为 NO

要解决崩溃问题,您应该在数据源更新后立即调用 [self.tableView reloadData]

此外,您的 tableView:numberOfRowsInSection: 应返回支持数据源的对象的计数。

这是一个示例实现,显示如果正确完成,滚动时更新数据源不会导致崩溃。

@interface CLViewController ()

@property (nonatomic, strong) NSMutableArray *stuffs;

@end

@implementation CLViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

self.stuffs = [NSMutableArray array];
for (int i = 0; i <= 100; i++) {
[self.stuffs addObject:[NSString stringWithFormat:@"%d", i]];
}

int64_t delayInSeconds = 3.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.stuffs removeAllObjects];
for (int i = 0; i <= 10; i++) {
[self.stuffs addObject:[NSString stringWithFormat:@"%d", i]];
[self.theTableView reloadData];
}
});
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.stuffs.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"StuffCell"];
cell.textLabel.text = [self.stuffs objectAtIndex:indexPath.row];
return cell;
}

@end

这会将 100 行加载到 viewDidLoad 上的 stuffs 数组中,该数组在应用启动时可立即滚动。 3秒后,stuffs数组被清空,并加载了10个项目,接下来调用[self.theTableView reloadData];,交互有点震动,但基本上是最后的90行就消失了,一切都很好,没有崩溃。

关于ios - uitableview] 如何防止用户在数据完全加载之前滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449669/

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