如何在重新加载表之后调用cellForRowAtIndexPath

时间:2012-09-12 12:08:29

标签: objective-c uitableview ios5

我想创建具有10个元素的UItableView。然而,它创建9(因为它是可见的),当该行可见时创建第10个,现在1个元素被销毁(第一个)。

使用这种方法我有一个问题,我想创建所有10行不重要是否可见,当行可见时只显示它。

只有在我调用reload table时才会重新创建这些行。

这可能吗?

感谢。

1 个答案:

答案 0 :(得分:0)

  • 在重新加载之前创建您的单元格
  • 将它们存储在某个数组中,
  • tableView:cellForRowAtIndexPath:中返回此数组中的单元格
  • 如果你想重新创建它们,只需用已经创建的单元格清空数组,再次创建它们并调用重载表

像这样......

@property (nonatomic,strong) NSArray *myCells;

...

- (NSArray *)myCells {
  if ( _myCells ) {
    return _myCells;
  }

  _myCells = [NSMutableArray array];

  UITableViewCell *cell = [[UITableViewCell alloc] init...];
  [_myCells addObject:cell];

  ...

  return _myCells;
}

- (void)reloadMyTable {
  self.myCells = nil;
  [self.tableView reloadData];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return 1;
}

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


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  return self.myCells[indexPath.row];
}