Gendolkariのソリューションは、デキューサイクルからセルを一時的に削除するためのアイデアを私に与えました。KVCを使用して読み取り専用の値を設定する必要があるため、真にハックする必要はありません。
サイクルからセルを最初に削除する場合は、その特定のセルのreuseIdentifierを変更します。後でセルを見つけられるようにしたいので、インデックスを作成できる名前に変更します。ここで[NSIndexPathの説明]が役立つことがわかりました。restartIdentifierは読み取り専用のプロパティですが、これはObjective-Cであり、KVCがあります。
[cell setValue:[[self.tableView indexPathForCell:cell] description] forKey:@"reuseIdentifier"];
これで、cellForRowAtIndexPathのセルを再利用するたびに次のようになります。
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];
restartIdentifierを変更したため、この特定のセルは返されません。
ただし、下にスクロールしてから上にスクロールすると、デキューサイクルから削除した元のセルを表示したい場合があります。セルを再利用するときにこれを行うには、最初にindexPathに基づいてセルをデキューしようとしますが、それが見つからない場合は、基本的なセルID文字列に基づいてセルをデキューしようとします。
UITableViewCell *cell;
cell = [self.tableView dequeueReusableCellWithIdentifier:[indexPath description]];
if (!cell) cell = [self.tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];
そのセルをデキューサイクルに戻したい場合は、reuseIdentifierを元の値に戻すだけです。
[cell setValue:@"cellIdentifier" forKey:@"reuseIdentifier"];