2013-11-26 89 views
1

我想在我的分組tableview中自定義標題。TableView - 在部分中自定義標題

我知道我可以做類似的東西做以下幾點:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *sectionHeaderView = [[UIView alloc] initWithFrame: 
           CGRectMake(0, 0, tableView.frame.size.width, 50.0)]; 

    //configure the UIView 

    return sectionHeaderView; 
} 

我新的iOS開發,因此到目前爲止,我只通過拖放配置在storyboad我的自定義視圖我想用於我的觀點的元素。

因此我的問題是:是否可以自定義故事板中標題視圖的外觀?

我想爲一些標題添加按鈕,例如。請記住,我想爲每個部分使用不同的標題。

+0

不,它不可能按鈕時的功能。您需要爲動態視圖編碼。看故事板作爲靜態視圖的集合。所有其他動態視圖必須通過代碼來開發。 –

回答

2

像Mr_bem說,你可以使用一個XIB文件,要做到這一點,要知道,雖然該loadNibNamed方法返回一個NSArray,您認爲應該是第一個,我實現它很容易:

heres a shot of a tableview using a XIB header

確保包括代碼,該32.f高度來自自由XIB的是我創建的尺寸:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return 32.f; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    NSArray *headerViewArray = [[NSBundle mainBundle] loadNibNamed:@"headerView" owner:self options:nil]; 
    UIView *headerView = [headerViewArray objectAtIndex:0]; 

    return headerView; 
} 

這就是XIB的樣子 - >header XIB

+0

感謝您的額外注意...我在該方法的末尾有一個'[0]',這也會返回相同的UIView; D – Albara

+0

oops我的歉意,我沒有看到! – JAManfredi

1

可以,只是創建一個XIB文件,並自定義您的觀點有,然後加載這樣的觀點:

MyCustomView* nibView = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil][0]; 

然後只返回它在你的委託函數(Y):)

0

您可以使用addSubView:方法將UI元素添加到UIView

事情是這樣的:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *sectionHeaderView = [[UIView alloc] initWithFrame: 
          CGRectMake(0, 0, tableView.frame.size.width, 50.0)]; 

    //configure the UIView 

    // Initialize an UIButton 
    UIButton *someButton = [[UIButton alloc] init]; 

    // Give it a title 
    someButton.titleLabel.text = @"Touch me :3"; 

    // Add the button to the headerView 
    [sectionHeaderView addSubView:someButton]; 

    return sectionHeaderView; 
} 

如果你想不同的UIView的不同部分,使用if功能:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
    // If this is the first section (0 section) 
    if (section == 0) { 
     UIView *sectionHeaderView = [[UIView alloc] initWithFrame: 
          CGRectMake(0, 0, tableView.frame.size.width, 50.0)]; 

     //configure the UIView 

     // Initialize an UIButton 
     UIButton *someButton = [[UIButton alloc] init]; 

     // Give it a title 
     someButton.titleLabel.text = @"Touch me On section One :3"; 

     // Add the button to the headerView 
     [sectionHeaderView addSubView:someButton]; 

     return sectionHeaderView; 
    } 

    // If this is the second section (1 section) 
    if (section == 1) { 
     UIView *sectionHeaderView = [[UIView alloc] initWithFrame: 
          CGRectMake(0, 0, tableView.frame.size.width, 50.0)]; 

     //configure the UIView 

     // Initialize an UIButton 
     UIButton *someButton = [[UIButton alloc] init]; 

     // Give it a title 
     someButton.titleLabel.text = @"Touch me On sectio Two :3"; 

     // Add the button to the headerView 
     [sectionHeaderView addSubView:someButton]; 

     return sectionHeaderView; 
    } 
    } 

好運。

0

您可以使用原型單元格通過故事板完成,然後使用要添加到其中的任何UIButtons,UILabels等的標籤。

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

    // Stuff you want to do to your header 
    // Tag can be anything except 0. You set this in the interface builder 
    UILabel * myHeaderLabel = (UILabel *)[cell viewWithTag:1]; 
    UIButton * myHeaderButton = (UIButton*)[cell viewWithTag:2]; 

    myHeaderLabel.text = [NSString stringWithFormat:@"Section: %d", section]; 

    myHeaderButton.title = @"Button Title"; 
    // headerButtonClicked is a function you want the button to do 
    [myHeaderButton addTarget:self action:@selector(headerButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

    return cell; 
} 

創建被點擊

-(void)viewActivityMoreInfo:(id)sender 
{ 
    UIButton *btnClicked = (UIButton *) sender; 
    // do something here 
} 
相關問題