UITableViewCell
をオーバーライドして static を非表示にする方法の多くの例を見てきましたが、heightForRowAtIndexPath
今は機能していますが、何か間違っているかどうかを確認したいほど面倒です。
UITableViewController
約8行のテーブルビューがあります。私のアプリのこの画面には 1 つのオブジェクトが表示されます。たとえば、1 行は説明、1 行は画像、1 行はマップ ビューなどです。すべての行は静的です。
場合によっては、表示されているオブジェクトの一部にマップがないため、mapview
. これは静的な行なので、その行のアウトレット プロパティ (例: @property (weak, nonatomic) IBOutlet UITableViewCell *mapViewRow;
) を使用することで、その行の高さを 0 に設定したり、または でその行を非表示にしたりできると考えていましviewDidLoad
たviewWillAppear
。ただし、これを行う唯一の方法はheightForRowAtIndexPath
メソッドをオーバーライドすることのようです。これは、コードでマップ行のインデックスをハードコーディングする必要があるため、面倒です。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 6 && self.displayItem.shouldHideMap) {
return 0;
}
return [super tableView:tableView heightForRowAtIndexPath:indexPath];
}
もちろん、大したことではありませんが、静的な行のサイズを変更する方法全体がtableview
、そもそもストーリーボードにそれらを設定するという点を無効にしているように思えます。