1

より複雑なモーダル ダイアログにテーブルビューが組み込まれています。ダイアログを表示する前に、選択したセルのインデックスを外部に提供し、ダイアログは tv:willDisplayCell: で処理して、右側のセルが太字フォントになるようにします。しかし、最終的にダイアログが表示されたら、他の行を選択するときにこれも変更できるようにする必要があります。
おそらく何かが足りないのですが、どうすればいいですか?選択したセル タイトルのフォントを太字に設定するにはどうすればよいですか?

4

2 に答える 2

1

これを堅牢にするには、セルをtableView:didSelectRowAtIndexPath:更新するだけでなく、選択したセルのインデックスを保存する必要があります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
    NSIndexPath *previousIndexPath = self.selectedIndexPath;
    self.selectedIndexPath = indexPath;
    [tableView reloadRowsAtIndexPaths:@[ previousIndexPath, indexPath]
                     withRowAnimation:UITableViewRowAnimationNone];
}

これで、以前に選択したセルと新しく選択したセルの両方がリロードされ、テキストを太字にする現在の実装は、cellForRowAtIndexPath:何らかの方法で行うと仮定して機能するはずです

if ([indexPath isEqual:self.selectedIndexPath]) {
  // bold
} else {
  // not bold
}

これが単にセルを更新するよりも堅牢でtableView:didSelectRowAtIndexPath:ある理由は、セルが画面に戻ったときにセルをスクロールしてオフにすると、正しく強調表示されるためです。ここでは、ビューだけでなくモデルも更新しています。

于 2012-12-09T23:26:50.530 に答える
1

適切なデリゲート メソッドでフォントを変更できます。

- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)ip
{
    UITableViewCell *c = [tv cellForRowAtIndexPath:ip];
    c.textLabel.font = [UIFont boldSystemFontOfSize:14.0]; // for example
}
于 2012-12-09T21:20:20.767 に答える