tableView に「もっと読み込む...」を実装しようとしています。やったことはありますが、効率的かどうかはわかりません。事は、私はカスタムセルを持っているということです.私がこれを好きなら:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
ArticlesCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ArticlesCell" owner:self options:NULL];
cell = (ArticlesCell *) [nib objectAtIndex:0];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
tableView.backgroundColor = cell.backgroundColor;
if (indexPath.row <= (self.bookmarks.count - 1)) {
[self configureCell:cell atIndexPath:indexPath];
}else{
cell.textLabel.text = @"Load more...";
}
return cell;
}
それはうまく機能しますが、セルを再利用しています。スクロールすると、5 つおきのセル (これは高さ 77.0) に「さらに読み込む...」というラベルが付けられますが、実際には通常どおりに機能します。この回避策を見つけましたが、それが適切で効率的かどうかはわかりません。
ここにあります:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
if (indexPath.row <= (self.bookmarks.count - 1)) {
ArticlesCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ArticlesCell" owner:self options:NULL];
cell = (ArticlesCell *) [nib objectAtIndex:0];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
tableView.backgroundColor = cell.backgroundColor;
[self configureCell:cell atIndexPath:indexPath];
return cell;
}else{
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.textLabel.text = @"Load more...";
return cell;
}
}
ご覧のとおり、「もっと読み込む...」セルを単純な UITableViewCell にしていますが、それは 1 つしかないため、再利用しません。これは良いアプローチですか?何か良いアドバイスをいただけないでしょうか?ありがとうございました!