2013-01-08 171 views
3

我有一個靜態tableView與一些自定義單元格。我想要做的是以編程方式更改節標題。據我所知,因爲單元格是靜態的,所以我不能使用像cellForRowAtIndexPath等方法,所以我的問題是,它可能會改變它們。編輯靜態tableView單元格部分

self.tableView.section1.text = @"title1"; // something like this? 

我試圖創建節的一個IBOutlet,但我得到了以下錯誤:

Unknown type name 'UITableViewSection': did you mean 'UITableViewStyle?' 

什麼我可以做的是編輯單元格的內容,而不是標題。

謝謝!

回答

6

使用viewForHeaderInSection方法。

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


     UILabel *label1 = [[UILabel alloc] init]; 
     label1.frame = CGRectMake(0, 0, 190, 20); 
     label1.textColor = [UIColor blackColor]; 
     // label1.font = [UIFont fontWithName:@"Helvetica Bold" size:16]; 
     [label1 setFont:[UIFont fontWithName:@"Arial-BoldMT" size:14]]; 
     label1.textAlignment = UITextAlignmentCenter; 

     label1.text =[NSString stringWithFormat:@"Title %d",section]; 
// If your title are inside an Array then Use Below Code 

     label1.text =[titleArray objectAtindex:section]; 

     label1.textColor = [UIColor whiteColor]; 
     label1.backgroundColor = [UIColor clearColor]; 




UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)]; 
    [view addSubview:label1]; 

    view.backgroundColor = [UIColor orangeColor]; 
     return view; 

    } 

如果您想使用titleForHeaderInSection,請使用下面的代碼。

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 

return [NSString stringWithFormat:@"Title %d",section]; 
// If your title are inside an Array then Use Below Code 

     return [titleArray objectAtindex:section]; 
} 
+0

非常感謝你,這完美的作品! – Linus

3

可以使用的UITableViewDelegate協議方法tableview:titleForHeaderInSection:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 

    NSString *sectionTitle = @""; 

    switch (section) { 

     case 0: sectionTitle = @"Section 1"; break; 
     case 1: sectionTitle = @"Section 2"; break; 
     case 2: sectionTitle = @"Section 3"; break; 

     default: 
      break; 
    } 

    return sectionTitle; 
} 

確保你宣佈你<UITableViewDelegate>在您的.h文件中:

@interface SettingsViewController : UITableViewController <UITableViewDelegate> { 

} 
+0

只要在視圖加載之前設置了節標題,就可以很好地工作。不過,我希望能夠更改表格標題,以響應表格上的用戶操作。任何方式來強制表重新加載或反映這些更改(假設我將sectionTitle設置爲更改的本地屬性值)? – Nick

+1

想通了:更容易做到這一點:'[self.tableView headerViewForSection:1] .textLabel.text = @「blah」;'Via http://stackoverflow.com/a/17959411/1304462 – Nick

1

如果您需要更改頭時視圖顯示爲'live',您可以這樣做:

int sectionNumber = 0; 
[self.tableView headerViewForSection:sectionNumber].textLabel.text = @"Foo Bar"; 

但是這樣做似乎並沒有改變標籤框的大小。我只是提前將我的身材做得更大。 More details here.

相關問題