iOS - UITableView在numberOfRowsInSection:和cellForRowAtIndexPath:方法之间工作不正确

时间:2012-09-18 17:29:16

标签: ios uitableview

我在UIView中创建一个UITableView,只使用代码(不使用IB)

 m_tableData = [[UITableView alloc] init];
 m_tableData.dataSource = self; 
 m_tableData.delegate = self;   
 [self addSubview:m_tableData];

并且

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     NSLog(@"%d", [arrPanelListImg count]);
     return [arrPanelListImg count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"kCell"];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"kCell"] ;


        NSLog(@"%d", indexPath.row);

    }

return cell;

}

在日志屏幕中,我看到了

numberOfRowsInSection:方法返回18。 和cellForRowAtIndexPath:方法一样,只运行9次(适合屏幕)。

我的代码中没有发现任何奇怪的内容。所以在这种情况下任何人都对我有任何建议。 谢谢你提前。

2 个答案:

答案 0 :(得分:0)

您需要使用UITableView的{​​{1}}方法 - 这是initWithFrame:style:类的指定初始值设定项。

答案 1 :(得分:0)

你的意思是

m_tableData = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];

当我改变它时,与我原来的结果没什么不同。这真的很奇怪,这是我第一次看到这个错误而仍然没有解决方案。

编辑: - 只需删除检查条件单元格== nil并正常工作。