当我使用EGOTableViewPullRefresh时,表格单元格会重复

时间:2012-05-13 08:30:43

标签: objective-c ios uitableview

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

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

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

  3. 有没有人可以给我一个方向?

    [编辑]
    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
    

    我把[自我更新]放在reloadTableViewDataSource中,第一次打开我的应用程序时,桌面视图中没有显示任何内容。然后我拉动刷新,它的工作原理。然后再次刷新,它重复了。
    这是"刷新"方法

        - (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)"之前该部分中包含的行数。
    如上所述,我真的很困惑我应该把这条线放在哪里。
    感谢~~

1 个答案:

答案 0 :(得分:0)

构建数组的viewDidLoad中的逻辑应该移动到它自己的方法(reloadTableViewData),然后你只需要在viewDidLoad中调用该方法。

[self reloadTableViewData];

当你进行刷新时,你也会调用相同的方法。

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