これに関連する他の質問をここで見ましたが、私はそれらの解決策を用意しており、スクロールすると物事はまだ動き回っています。
基本的に、データのテーブルがあり、最初の行と唯一の行にUITableViewCellAccessoryDisclosureIndicatorが必要です。問題は、スクロールすると、インジケーターが複製され、削除され、他のセルに移動することです。これが私のコードです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if(indexPath.row == 0) {
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
cell.textLabel.text = [tabledata objectAtIndex:indexPath.row];
return cell;
}
問題は、indexPath.row変数に問題があります。最初ではない他のセルで0を返す(セルの表示に関して)。ただし...データは常に私の配列(値が正しいことを意味します)からのものであり、
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
メソッドでは、行0がクリックされたときにのみ画面を変更したいと思います。スクロールした場所に関係なく、最初のセルを除いてセルはトリガーされません。したがって、cellForRowAtIndexPath内のチェックは正しくないのに、チェックは常に正しいようです...