2013-01-20 52 views
3

我似乎無法使用Storyboard將標題添加到UITableView。我有一個UITableView與幾個原型單元顯示和工作正常。然後,我在這些原型單元格的上方拖放了一個新的UIView,並添加了一個標籤來充當我表格的標題(而不是段標題)。我創建了一個UIView的新子類,其中一個屬性是UILabel。故事板中的UIView類設置爲此自定義UIView,並且UILabel的引用出口設置爲我自定義的UIView類的UILabel屬性。使用Storyboard將自定義標題添加到UITableView

然後,在我的UITableViewController的viewDidLoad方法,我做了以下內容:

DetailTableHeaderView *headerView = [[DetailTableHeaderView alloc] init]; 
headerView.entryNameLabel.text = @"TEST"; 
self.tableView.tableHeaderView = headerView; 
[self.tableView reloadData]; 

但是當我運行我的應用程序中的表頭是完全無法顯示了。我還注意到,headerView.entryNameLabel的text屬性甚至沒有設置爲「TEST」,因爲它應該是。

我在這裏做錯了什麼?

+0

故事板如何知道要爲tableview標題加載什麼內容?你只是初始化視圖控制器,但是沒有看法可以配合它! – msgambel

+0

不知道你的意思。在故事板中,我添加了一個帶有UILabel的UIView作爲表頭。然後我創建了一個名爲'DetailTableHeaderView'的自定義UIView子類,它包含一個名爲'entryNameLabel'的UILabel屬性。在故事板中,我將頭部視圖的類設置爲'DetailTableHeaderView',並且將UILabel引用出口到UILabel'entryNameLabel'。這不夠嗎? – el3ktro

+0

故事板如何知道如何加載視圖?你沒有告訴它要執行任何遊戲,並且根據你的評論判斷,我敢打賭,所討論的「視圖」與任何內容都沒有任何關聯,它只出現在故事​​板中。試試:'[self.storyboard instantiateViewControllerWithIdentifier:@「DetailTableHeaderView」];'設置你的'UITableViewHeader'。確保'DetailTableHeaderView'雖然是一個'UIViewController'。 – msgambel

回答

0

這個問題很古老,但寫了這個答案,希望這將有助於某人。

處理表headerView的好方法是使用委託方法。實施tableView:viewForHeaderInSectiontableView:heightForHeaderInSection委託方法。從tableView:viewForHeaderInSection方法返回您的UIView。

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
} 

另一種選擇是使用頭視圖原型細胞(自定義單元格),並在返回的tableView它:viewForHeaderInSection方法。請參見下面的代碼(我沒有測試這一個):

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 

    HeaderView *headerView = [self.TableView dequeueReusableHeaderFooterViewWithIdentifier:@"tableHeader"]; 

    // Set Text 
    headerView.headerLabel.text = @"Some title"; 

    return headerView.contentView; 
} 

UPDATE

上述也適用於的tableView:viewForHeaderInSection:方法。下面是示例代碼:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UITableViewCell *sectionHeader; 
    CustomSectionHeaderCell *sectionHeaderCell = [tableView dequeueReusableCellWithIdentifier:@"sectionHeaderCell"]; 

    // do stuff here 

    return sectionHeaderCell.contentView; 
} 
+4

您不回答這個問題。這不是他想要的。 –

1

老問題,但我提供我的答案以供參考的原因,因爲它仍然是一個有點不平凡如何添加一個tableview中頭部,用故事板的設計部分。

  1. 在故事板中的tableview中添加原型單元格。
  2. 選中原型單元格後,在右側的屬性檢查器中爲其指定一個標識符(例如headerViewCell),因爲這是您將引用它以便使用它的方式。
  3. 現在單擊大小檢查選項卡上,並給它一個行高(這會是你的頭視圖高度)
  4. 在現在的代碼,該處理的tableview控制器:

    - (void)viewDidLoad { 
        [super viewDidLoad]; 
        self.tableView.tableHeaderView = [self.tableView dequeueReusableCellWithIdentifier:@"headerViewCell"]; 
    } 
    
相關問題