UITableView不会重复使用故事板的单元格

时间:2014-12-15 12:44:13

标签: ios uitableview storyboard

我正在开发iOS 7+应用,而且我在故事板中显示了一些显示奇怪行为的UITableViewController。我在其中一个中定义了一个基本原型单元,带有标识符@" standardCell"也设置在故事板中。在相关的UITableViewController课程中,我是这样的:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   // Return the number of sections.
   return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   // Return the number of rows in the section.
   return 20;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   static NSString *cellIdentifier = @"standardCell";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

   if (cell == nil) {
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
   }

   cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];

   return cell;
}

单元格会在显示表格视图时加载第一个单元格,但是只要我滚动表格内容,所有设置的单元格标题都显示为空,并且不再调用cellForRowAtIndexPath:didSelectRowAtIndexPath:委托方法既未被调用。

我已将此表视图的delegatedataSource都设置为表视图控制器。其.h文件符合UITableViewController <UITableViewDataSource, UITableViewDelegate>

我发现了另一个表视图和相关视图控制器的类似问题,其中原型单元格是自定义单元格:当我滚动表格时,单元格显示错误的数据和奇怪的内容,就好像未按预期出列并重复使用的单元格

我能错过什么?

由于

1 个答案:

答案 0 :(得分:1)

至少在这种方法中:

改变这个:

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

static NSString *cellIdentifier = @"standardCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

 if (cell == nil) {
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];

return cell;
}

对此:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{  
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"standardCell" forIndexPath:indexPath];

cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];

return cell;
}