[解決済み] UITableView(グループ化スタイル)で最初のセクションのヘッダーを隠す方法
質問
iOS 7でグループ化スタイルを使用したテーブルビューのデザインが大きく変わったので、最初のセクションのヘッダーを隠したい(または削除したい)のです。今のところ実現できていません。
少し簡略化すると、私のコードは以下のようになります。
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return 0.0f;
return 32.0f;
}
- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0) {
UIView* view = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 640.0f, 0.0f)];
return view;
}
return nil;
}
- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return nil;
} else {
// return some string here ...
}
}
もし私が高さ0を返したら、他の2つのメソッドはセクションインデックス0で決して呼び出されません。しかし、空のセクションヘッダーはデフォルトの高さで描画されたままです。(iOS 6 では、この 2 つのメソッドは呼び出されます。ただし、目に見える結果は同じです)。
異なる値を返すと、セクションヘッダーは指定された高さを取得します。
0.01を返すと、ほぼ正しく表示されます。しかし、シミュレータで "Color Misaligned Images" をオンにすると、すべてのテーブル ビューのセルにマークがつきます (これは論理的な結果のようです)。
質問に対する回答 UITableView: 空のセクションからヘッダーを隠す は、セクションのヘッダを隠すことに成功した人がいることを示しているようです。しかし、それは(グループ化されたものでなく)プレーンなスタイルに適用されるかもしれません。
これまでのところ最良の妥協点は、高さを 0.5 に戻し、ナビゲーション バーの下にやや太い線をもたらすことです。しかし、最初のセクション ヘッダーを完全に隠すことができる方法を知っている人がいれば、感謝します。
更新
によると カグラー の解析では ( https://stackoverflow.com/a/19056823/413337 ) の分析によると、問題はテーブルビューがナビゲーションコントローラーに含まれている場合にのみ発生します。
どのように解決するのですか?
私には合理的にきれいに見える回避策があります。だから私は自分自身の質問に答えているのです。
最初のセクションヘッダーの高さを0にするとうまくいかないので、1を返します。それから、私は contentInset を使用して、ナビゲーションバーの下にその高さを隠します。
Objective-Cです。
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return 1.0f;
return 32.0f;
}
- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return nil;
} else {
// return some string here ...
}
}
- (void) viewDidLoad
{
[super viewDidLoad];
self.tableView.contentInset = UIEdgeInsetsMake(-1.0f, 0.0f, 0.0f, 0.0);
}
Swiftです。
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return section == 0 ? 1.0 : 32
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.contentInset = UIEdgeInsets(top: -1, left: 0, bottom: 0, right: 0)
}
関連
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] コードサインエラーです。期限切れのプロファイルを削除した後、プロビジョニングプロファイルが見つからない
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] UITableView - セクションヘッダーの色を変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] NSNotificationCenterのaddObserver in Swift
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。