2

我想要实现的功能是首先我在一个UITableView完美显示的两行中显示。然后didSelectRowAtIndexpath:,我在 中添加numberOfRowsUITableView为此我UITableView在添加numberOfRows和所需数据后重新加载。

我的问题是我正在传递新的行数numberOfRowsInSection:(我已经检查过,它是正确传递的)但cellForRowAtIndexpath:在那之后只被调用了两次,这是以前的numberOfRows值。

我的代码:

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
   // My code for cell construction goes here
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   [self.arrWithAdditionalValues addObjectsFromArray:[self.dictSubCategoriesLevel3 objectForKey:[NSString stringWithFormat:@"%d",rowOpened]]];
   self.currentSubCategoryRows += self.arrWithAdditionalValues.count;
            [tableView reloadData];
}

可能是什么原因?

任何帮助,将不胜感激!!!

4

3 回答 3

6

我找到了解决方案。

当我UITableView根据 中的行数调整我的大小时cellForRowAtIndexPath:,这就是为什么下一部分UITableView不可见,而对于不可见的部分UITableViewcellForRowAtIndexPath:则永远不会被调用。

很抱歉打扰大家。

非常感谢你的帮助!!!

于 2012-07-11T06:19:25.437 回答
4

cellForRowAtIndexPath: 仅在需要绘图时才调用。您必须在不控制何时调用它的情况下构建该方法。

于 2012-07-11T05:36:57.887 回答
2

尝试重新加载表viewWillAppear

- (void)viewWillAppear:(BOOL)animated {
    [tableview reloadData];
    }
于 2012-07-11T05:33:32.917 回答