uitableview重新加载问题

发布于 2024-10-21 03:18:40 字数 367 浏览 7 评论 0原文

我有一个 tableviewcontroller,在它里面我正在尝试加载表的数据。我有一个数组并使用该数组创建自定义表格单元格。它第一次工作正常,但是当我想刷新表数据时(更新数组后,我调用 tableview 的 reloadData 方法),但更新的数据在滚动后出现。而且新的数组大小比第一个数组短,当滚动到底部时它会抛出异常。

reloadData 无法正常工作,

myArray = [self getNewData:0];  //updating array which is used to creating cells
[self.tableView reloadData];    //reload data

谢谢...

i have a tableviewcontroller and inside it i am trying loading data of the table. i have an array and creating my custom table cells using this array. it works fine at first time but when i want to refresh table data (after updating array i call reloadData method of tableview) but updated data appears after scrolling. and also new array size is shorter than the first one it throws exception when scrolling toward bottoms.

reloadData does not work properly

myArray = [self getNewData:0];  //updating array which is used to creating cells
[self.tableView reloadData];    //reload data

thanks...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

自我难过 2024-10-28 03:18:40

听起来对 reloadData 的调用完全无效。因此,请检查 self.tableView 在您调用它时是否为非零 - 将 NSLog 放在该行上方,如下所示:

NSLog(@" self.tableView = %@", self.tableView);

如果它为 nil,那就是您的问题。

It sounds like the call to reloadData is being completely uneffective. So check that self.tableView is non-nil at the point you're calling it -- put an NSLog above that line like so:

NSLog(@" self.tableView = %@", self.tableView);

If it's nil, that's your problem.

分開簡單 2024-10-28 03:18:40

你说,滚动后会出现更新的数据。
您是否在单元格中添加标签而不是删除它们?在自定义单元格之前删除添加到单元格上的所有标签。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    for (UIView * view in cell.contentView.subviews)
    {
        [view removeFromSuperview];
        view = nil;
    }
    //Your customization
    return cell;
}

可能是这样的。
但是 oculus 建议的对我来说似乎是更精确的解决方案。

You said, updated Data is appearing after scrolling.
Are you adding labels in your cell and not removing them? remove all the labels added on your cell before customizing it.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    for (UIView * view in cell.contentView.subviews)
    {
        [view removeFromSuperview];
        view = nil;
    }
    //Your customization
    return cell;
}

This might be the case.
But what occulus suggested seems to be more precise solution to me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文