2009-06-03 12 views
5

iPhoneの場合、グループ化された1つのセクションがあり、nibのUILabelオブジェクトであるセクションヘッダーを設定したUITableViewがあります。テーブルビューが表示されると、ヘッダはテキストなしの黒のストライプとして表示されます。UITableViewセクションのヘッダーはすべて黒色です

heightForHeaderInSectionでは、高さをUILabelオブジェクトのframe.size.heightに設定しました。 IBの高さを変えると、黒い縞の高さが変わります。だから私は.mファイルが正しいUILabelオブジェクトにラッチされていることを知っています。

viewForHeaderInSectionのデバッガでは、UILabelオブジェクトの幅がゼロで、高さが1079574528で、テキストがnullであるようです。

私が間違ってやっている上の任意の考え?

答えて

0

あなたheightForHeaderInSectionとあなたのviewForHeaderInSection関数のコードを投稿することができますか?あなたがしていることの背後にある理論は正しいとは言えますが、コードを見ることなく、問題を理解することはほとんど不可能です。

IBのビューにラベルを貼り付けようとしているようですヘッダービューとして使用してください。これは適切なやり方ではありません。あなたはviewForHeaderInSectionを使用していない場合は、次のように...試みることを与える:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UILabel *lbl; 
    lbl.text = @"Header for The Only Section"; 
    //define other properties for the label - font, shadow, highlight, etc... 

    return lbl; 
} 
+2

ラベルを初期化していないため、動作しません。 '[UILabel alloc] initWithFrame:someFrame]'が必要です。次に、 'text'プロパティを設定することができます。 –

25

ないあなたは間違ってやっていることを確認しますが、ここにpostから(役立つかもしれないいくつかのサンプルコードがあります私のブログ):

#define SectionHeaderHeight 40 


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    if ([self tableView:tableView titleForHeaderInSection:section] != nil) { 
     return SectionHeaderHeight; 
    } 
    else { 
     // If no section header title, no section header needed 
     return 0; 
    } 
} 


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section]; 
    if (sectionTitle == nil) { 
     return nil; 
    } 

    // Create label with section title 
    UILabel *label = [[[UILabel alloc] init] autorelease]; 
    label.frame = CGRectMake(20, 6, 300, 30); 
    label.backgroundColor = [UIColor clearColor]; 
    label.textColor = [UIColor colorWithHue:(136.0/360.0) // Slightly bluish green 
           saturation:1.0 
           brightness:0.60 
             alpha:1.0]; 
    label.shadowColor = [UIColor whiteColor]; 
    label.shadowOffset = CGSizeMake(0.0, 1.0); 
    label.font = [UIFont boldSystemFontOfSize:16]; 
    label.text = sectionTitle; 

    // Create header view and add label as a subview 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, SectionHeaderHeight)]; 
    [view autorelease]; 
    [view addSubview:label]; 

    return view; 
} 
+0

私は黒の "バー"の問題を抱えていますが、横長モードに切り替えるときにのみ、ポートレートに戻ったときに修正されません。私がこれまでに見つけたのは、tableview上でreloadDataを呼び出すことによって "修正"することができましたが、これは何かを修正するために呼び出すための非常に重いメソッドです... – kdbdallas

+1

コードサンプルがどれくらい時間を節約できたかは、 ) **ありがとうございました!!!! –

1

私は同じ問題を持っていたと私は設定している場合、なぜ黒いバーはかなり..

を考え出ししかし、代わりにデリゲートメソッドでヘッダーとフッターのビューを提供する、 していませんヴァルues for tableView.tableHeaderViewtableView.tableFooterView、そのすべての素晴らしい!

+0

私のために働いた。私のヘッダーは透明で、行の上にあった。 – casey

0

3.1.3 [UIColor clearColor]のようなものはありません。テーブルビューと同じ背景色を使用してみてください

0

データソースが読み込まれた後にリフレッシュするときと同じ動作が観察されました。 これは、私がテーブルビューをリフレッシュする方法によると気付いた。

//[self loadView]; this caused the section header to go black. 
[self.tableView reloadData]; // this works! 
関連する問題