【问题标题】:table cells get duplicated when I use EGOTableViewPullRefresh当我使用 EGOTableViewPullRefresh 时,表格单元格会重复
【发布时间】:2012-05-13 08:30:42
【问题描述】:

我正在使用 this tutorial 开发 RSS 阅读器。所有表格单元格数据都来自 NSMutableArray 实例 (_allEntries)。然后我导入 EGOTableViewPullRefresh 并在-(void)reloadTableViewDataSource 中添加[self refresh]self.refresh 是一种填充 allEntries 数据的方法)。 然后拉刷新作品,但每次我刷新时都会重复单元格。我尝试通过两种方式解决它。

  1. 从网上下载数据时,在[_allEntries insertObject:entry atIndex:insertIdx]前加上if (![_allEntries containsObject:entry]),但不起作用,也许我应该在对象中使用entry.title或其他一些属性来比较,但它没有效果。

  2. 和我在-viewDidLoad做的一样,加self.allEntries = [NSMutableArray array],但是我不知道应该把这行放在哪里。

有没有人可以给我指路?

[编辑]
viewDidLoad 没有太多逻辑,只是

    self.allEntries = [NSMutableArray array];
    self.queue = [[NSOperationQueue alloc] init]; //add download&parse operation to a queue 
    self.feeds = [self getFeeds];  //load feeds from local file

我把 [self refresh] 放在 reloadTableViewDataSource 中,第一次打开我的应用程序时,tableview 中没有任何显示。然后我拉刷新,它的工作原理。然后再次拉动刷新,它被复制了。
这是“刷新”方法。

    - (void)refresh {
        for (NSString *feed in _feeds) {
            NSURL *url = [NSURL URLWithString:feed];
            ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
            [request setDelegate:self];
            [_queue addOperation:request];
        }    
    }

我想重建数组,所以我再次编写 self.allEntries = [NSMutableArray array] 但结果是
“无效更新:第 0 节中的行数无效。更新后的现有节 (1) 必须等于更新前该节中包含的行数 (140)”。
如前所述,我真的很困惑我应该把这条线放在哪里。
谢谢~~

【问题讨论】:

    标签: objective-c ios uitableview


    【解决方案1】:

    您在 viewDidLoad 中构建数组的逻辑应移至其自己的方法 (reloadTableViewData),然后您只需在 viewDidLoad 中调用该方法。

    [self reloadTableViewData];
    

    当您执行拉动刷新时,您也可以调用相同的方法。

    确保您正在重建该数组,而不仅仅是将对象添加到现有数组。

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多