アコーディオン セル パターンでテーブルビュー セルの展開/折りたたみを試みているため、ユーザーが行をタップすると、行の高さを拡張してセル内の選択された行の詳細な説明が表示されます。「cell.textLabel.text」および「cell.detailTextLabel.text」セルに表示するための「array」と「detailarray」の2つの配列があります。最初に「cell.detailTextLabel.hidden = YES」を非表示にして、ユーザーが行をタップするとセルの拡張テキストを取得できるようにしました。
私のコード、
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
cell.textLabel.text=[array objectAtIndex:indexPath.row];
cell.detailTextLabel.text=[detailarray objectAtIndex:indexPath.row];
cell.detailTextLabel.hidden = YES;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSLog(@"indexpath is %d", indexPath.row);
selectedIndex = indexPath.row;
isSearching = YES;
[self.tableview beginUpdates];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text=[array objectAtIndex:indexPath.row];
cell.detailTextLabel.text=[detailarray objectAtIndex:indexPath.row];
cell.detailTextLabel.hidden = NO;
[self.tableview endUpdates];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (isSearching && indexPath.row == selectedIndex)
{
return 77;
}
return 44;
}
これで、4 行の tableviewcell が作成されました。各行をタップすると、選択した行の拡張ビューが表示されます。実行時に、セルが拡張すると「detailarray」テキストが表示されますが、didselectRowAtIndexPath関数が停止すると消えます。なぜそうなるのか、この点で誰でも助けてくれます。