2010-08-06 130 views
9

每當我設置我的tableHeaderView我沒有看到它在模擬器中。 如果我將它作爲子視圖添加,它最終會在節標題下繪製。任何想法我在這裏失蹤?tableView.tableHeaderView被設置,但沒有繪製

我有一個XIB文件。雖然我沒有看到IB中的任何屬性影響headerViews。

- (void)viewDidLoad { 
[super viewDidLoad]; 
MyTitleView *titleView = [[MyTitleView alloc] initWithFrame:CGRectMake(60,0,260,40)]; 
titleView.label.text = @"My Title"; 
self.navigationItem.titleView = titleView; 
[titleView release]; 

StandardTableHeaderView *headerView = [[StandardTableHeaderView alloc] initWithFrame:CGRectMake(0,0,320,44)]; 
self.tableView.tableHeaderView = headerView; 
// [self.view addSubview:self.tableView.tableHeaderView]; 
// [headerView release]; 


NSLog(@"Header: %@",self.tableView.tableHeaderView); //Logs ] Header:  <StandardTableHeaderView: 0x5a508b0; frame = (0 0; 320 44); layer = <CALayer: 0x5a51130>> 

編輯: StandardTableHeaderView.m init方法:所有代碼

- (id)initWithFrame:(CGRect)frame { 
if ((self = [super initWithFrame:frame])) { 
    self.backgroundColor = [UIColor redColor]; 
    self.label = [[UILabel alloc] initWithFrame:CGRectMake(frame.origin.x,0,frame.size.width,frame.size.height)]; 
    self.label.backgroundColor = [UIColor clearColor]; 
    self.label.textColor = [UIColor whiteColor]; 
    self.label.font = [UIFont fontWithName:@"Helvetica" size:16]; 
    [self addSubview:self.label]; 
} 
return self; 
} 

回答

7

首先看起來不錯。

2可能出現的問題:

  • self.tableView未設置
  • tableHeaderView被重寫,我有同樣的問題後viewDidLoad
+0

我的tableView設置 - 細胞起作用精細和日誌顯示tableHeaderView幀細。我並沒有改變tableHeaderView在其他地方..也許有些怪異,應該複製到一個新的項目? – quantumpotato 2010-08-09 14:54:36

+0

現在我將嘗試調整tableview的大小並將Header視圖添加爲單獨的視圖。 – quantumpotato 2010-08-09 14:56:20

+1

您如何檢查tableView屬性是否已設置(而不是零)?單元格繪製的事實並不一定說tableView屬性不是零...嘗試添加'NSLog(@「self.tableView =%@,self.tableView.tableHeaderView =%@」,self.tableView ,self.tableView.tableHeaderView);'緊跟在'self.tableView.tableHeaderView = headerView;'viewDidLoad'裏面,看看你在日誌中得到了什麼...... – 2010-08-09 16:36:47

5

,並注意到,我在我的NIB定義的任何tableViewHeader會不會出現,如果我通過調用初始化我的tableview:

- (id)initWithStyle:(UITableViewStyle)style 

但它奇蹟般地出現沒有努力,當我初始化我的tableview使用:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 

奇怪。

+0

當你使用initWithNibName :,那麼你所有的NIB信息(如tableHeaderView)都會從你指定的NIB加載。這可能就是爲什麼它「神奇地出現」:) – 2015-05-09 08:57:43

4

注意!如果你期望表視圖爲你設置​​標題視圖的框架,那麼你錯了,會得到非常奇怪的結果。

我有我的設置爲CGRectZero認爲它會解決它自己,但事情不會出現,當它出現時,它會出現在導航欄下或隱藏到第一個單元格等等。

-7

嘗試在你的頭中設置的UITableViewDelegate和下面的代碼放置在您的.m文件。

#pragma mark UITableViewDelegate 
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    return 44.0f; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    StandardTableHeaderView *headerView = [[StandardTableHeaderView alloc] initWithFrame:CGRectMake(0,0,320,44)]; 

    return headerView; 
} 
+1

這是一個部分標題..不是表頭視圖... – TheCodingArt 2015-08-12 13:25:59

2

我試圖把的tableHeaderView設置在ViewDidLoadloadView方法 - 它沒有工作:視圖的一部分是白色的,不可見的完全。然後我試圖把它放到ViewDidAppear和它的工作:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [self setupTableHeaderView]; 
} 
+0

這對我來說也是如此......但爲什麼?我有其他的Xcode項目,我已經在'''viewDidLoad'''中設置了表頭視圖,並且一切正常。....嗯。非常感謝:) – Supertecnoboff 2016-11-15 12:40:12

0

我有我在那裏把一個tableviewcontroller內部視圖作爲頭一個問題,它不會顯示出來,當我跑的應用程序,問題是當沒有原型單元格時,我添加了標題。如果你添加至少一個原型單元格,然後添加它上面的頭部,然後刪除單元格(如果需要的話),它將其註冊爲一個headerview正確

0

當你在故事板中的UITableView中的UIView,並嘗試設置tableView.tableHeaderView = YOUR_VIEW,它不會工作。你必須首先拖放該視圖外部視圖控制器創建其出口,然後設置

tableView.tableHeaderView = YOUR_VIEW