iOS:带有图像的部分中的标题的TableView +标题

时间:2012-02-01 17:09:39

标签: objective-c ios uitableview

这是我第一次尝试在iOS中使用TableView并遇到问题。

我有一个只有2个部分的tableview,每个部分有两行。 我有一种情况,我需要在我的tableview的第一部分上面添加一个图像(比如在TableView顶部添加一个标志),我试图为第一部分创建/添加headerView,并将我的图像嵌入它,但问题是图像不会显示该部分的标题字符串。你觉得我需要创造吗?添加(addsubview)另一个字符串作为具有UILable的tile并将其附加到headerView或是否有任何其他方法来实现此目的? 问题依然存在,只要我显示该部分的headerView,一旦我删除它,将出现部分标题。

目前我这样做:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section    
{
    if (section == 0)
        return headerView;
    return nil;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return headerView.frame.size.height + self.rowHeight+28.0; //
    return 30.0;//for other title header section
}

和我的headerView分配如下:

CGRect headerViewRect = CGRectMake(0.0,  10.0,  frame.size.width -50  , self.rowHeight+50.0);
headerView = [[UIView alloc] initWithFrame:headerViewRect];
headerView.backgroundColor = [UIColor clearColor];

UIImageView *titleImage = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MyTitlePicture.png"]] autorelease];
CGRect imageViewRect = CGRectMake(0.0,  0.0,  frame.size.width -100  , self.rowHeight+28.0);
titleImage.frame = imageViewRect;
titleImage.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
[headerView addSubview:titleImage];

TIA, 卡姆兰

2 个答案:

答案 0 :(得分:1)

tableView方法(viewForHeaderInSection)应返回headerView(UIVIew *)。 该代码将返回您的部分的标题视图。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section    
{
if (section == 0){
    CGRect headerViewRect = CGRectMake(0.0,0.0,320,40);
    UIView* headerView = [[UIView alloc] initWithFrame:headerViewRect];
    headerView.backgroundColor = [UIColor clearColor];

    UIImageView *titleImage = [[[UIImageView alloc] initWithImage:
          [UIImage imageNamed:@"MyTitlePicture.png"]] autorelease];
    CGRect imageViewRect = CGRectMake(0.0,  0.0, 320 , 40);
    titleImage.frame = imageViewRect;
    titleImage.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
    [headerView addSubview:titleImage];

   //Then you can add a UILabel to your headerView
   return headerView;
}
return nil;
}

答案 1 :(得分:0)

您正在替换默认的标题视图,而不是添加它。您需要对UILabel进行编程,并将其作为子视图添加到标题视图中。