UITableView: 空のセクションからヘッダーを隠す
2023-07-26 11:47:37
質問
私はUITableViewを持っており、それは現在の月から費用を表示します(スクリーンショットを参照してください)。
私の問題は、空のセクションのヘッダーです。それらを隠す方法はありますか? データはcoredataから読み込まれます。
これは、ヘッダーのタイトルを生成するコードです。
タイトル用ヘッダー
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
if ([tableView.dataSource tableView:tableView numberOfRowsInSection:section] == 0) {
return nil;
} else {
NSDate *today = [NSDate date ];
int todayInt = [dataHandler getDayNumber:today].intValue;
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:(-(todayInt-section-1)*60*60*24)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]]];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString *formattedDateString = [dateFormatter stringFromDate:date];
return formattedDateString;}
}
ViewForHeader
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
if ([tableView.dataSource tableView:tableView numberOfRowsInSection:section] == 0) {
return nil;
} else {
UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 312, 30)];
UILabel *title = [[UILabel alloc]initWithFrame:CGRectMake(4, 9, 312, 20)];
UIView *top = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 312, 5)];
UIView *bottom = [[UIView alloc]initWithFrame:CGRectMake(0, 5, 312, 1)];
[top setBackgroundColor:[UIColor lightGrayColor]];
[bottom setBackgroundColor:[UIColor lightGrayColor]];
[title setText:[expenseTable.dataSource tableView:tableView titleForHeaderInSection:section]];
[title setTextColor:[UIColor darkGrayColor]];
UIFont *fontName = [UIFont fontWithName:@"Cochin-Bold" size:15.0];
[title setFont:fontName];
[headerView addSubview:title];
[headerView addSubview:top];
[headerView addSubview:bottom];
return headerView;
}
}
heightForHeader
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
NSLog(@"Height: %d",[tableView.dataSource tableView:tableView numberOfRowsInSection:section] == 0);
if ([tableView.dataSource tableView:tableView numberOfRowsInSection:section == 0]) {
return 0;
} else {
return 30;
}
}
セクションの行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int rows = 0;
for (Expense* exp in [dataHandler allMonthExpenses]) {
if ([exp day].intValue == section) {
rows++;
}
}
return rows;
}
<イグ セバスチャン
どのように解決するのですか?
もし
tableView:viewForHeaderInSection:
あなた
return nil
のように、セクション数が0であれば
EDIT
:
この場合
numberOfRowsInSection
でセクションの要素数を取得します。
EDIT
:
おそらく
titleForHeaderInSection
もし
numberOfRowsInSection
が0である場合。
EDIT : 以下のメソッドを実装しましたか?
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
EDIT : スウィフト3 例
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch section {
case 0:
if self.tableView(tableView, numberOfRowsInSection: section) > 0 {
return "Title example for section 1"
}
case 1:
if self.tableView(tableView, numberOfRowsInSection: section) > 0 {
return "Title example for section 2"
}
default:
return nil // when return nil no header will be shown
}
return nil
}
関連
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] UITableViewの下にある余分なセパレータをなくす
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] UITableView - セクションヘッダーの色を変更する
-
[解決済み] Objective-Cのクラス→文字列のようなものです。[NSArray className] -> @"NSArray" のようになります。
-
[解決済み] performSelectorの使用: メソッドを呼び出すだけと比較した場合
-
[解決済み] objective-cでNSURLの一部を取得する
-
[解決済み] 警告 "format が文字列リテラルでなく、format の引数がない場合"
-
[解決済み] Objective-Cです。NSNotificationのオブザーバを削除するには?
-
[解決済み] Swiftの変数はアトミックか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-CのクラスでSwiftのプロトコルをインポートする
-
[解決済み] Objective-Cのセレクタ?
-
[解決済み] UITableView(グループ化スタイル)で最初のセクションのヘッダーを隠す方法
-
[解決済み] objective-cでNSURLの一部を取得する
-
[解決済み] Objective-Cのプロテクトメソッド
-
[解決済み] Objective-CでQueueを作成し、使用するにはどうすればよいですか?
-
[解決済み] std::stringをNSStringに変換する方法は?
-
[解決済み] Objective-CのReadonlyプロパティ?
-
[解決済み] NSAutoreleasePoolのオートリリース・プールはどのように機能するのですか?
-
[解決済み] Objective-CのクラスからSwiftの関数を呼び出す