无法访问Iphone中的标题视图

时间:2013-11-20 09:46:09

标签: ios iphone objective-c uitableview

我在TableView中添加了一个标题视图,但我无法在IBAction方法中访问该视图或标题视图的任何子视图。

我的代码如下:

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *header_View=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 160, 40)];
    header_View.tag=section;
    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
    btn.Frame=header_View.bounds;
    [btn setTitle:[arr_headerTitles objectAtIndex:section] forState:UIControlStateNormal];
    btn.titleLabel.font=FontChampagneLimousinesBold(18);
    btn.tag=section;
    [btn addTarget:self action:@selector(expandTableHeaderView:) forControlEvents:UIControlEventTouchUpInside];
    UIImageView *img_arrow=[[UIImageView alloc]initWithFrame:CGRectMake(150, 05, 15, 15)];
    img_arrow.image= [UIImage imageNamed:@"arrow_white_down.png"];

    [header_View addSubview:btn];
    [header_View addSubview:img_arrow];
    return header_View;
}

-(void)expandTableHeaderView:(UIButton*)sender{
     //  UIView* _header_view =(UIView*)[_tbl viewWithTag:[sender tag]]; //Also tried
        UIView *_header_view=[_tbl headerViewForSection:section]; //shows nil;

        UIView *view = (UIView *)[_header_view viewWithTag:[sender tag]];
}

帮我解决这个问题 * 谢谢 *

3 个答案:

答案 0 :(得分:0)

试试这个:

-(void)expandTableHeaderView:(UIButton*)sender{
    UIView *_header_view =  sender.superview;
    // ...
}

答案 1 :(得分:0)

在创建header_View时尝试使用 UITableViewHeaderFooterView 而不是 UIView ,似乎正常工作

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UITableViewHeaderFooterView *header_View=[[UITableViewHeaderFooterView alloc]initWithFrame:CGRectMake(0, 0, 160, 40)];
    header_View.tag=section;
    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
    btn.Frame=header_View.bounds;
    [btn setTitle:[arr_headerTitles objectAtIndex:section] forState:UIControlStateNormal];
    btn.titleLabel.font=FontChampagneLimousinesBold(18);
    btn.tag=section;
    [btn addTarget:self action:@selector(expandTableHeaderView:) forControlEvents:UIControlEventTouchUpInside];
    UIImageView *img_arrow=[[UIImageView alloc]initWithFrame:CGRectMake(150, 05, 15, 15)];
    img_arrow.image= [UIImage imageNamed:@"arrow_white_down.png"];

    [header_View addSubview:btn];
    [header_View addSubview:img_arrow];
    return header_View;
}

-(void)expandTableHeaderView:(UIButton*)sender{
     //  UIView* _header_view =(UIView*)[_tbl viewWithTag:[sender tag]]; //Also tried
        UITableViewHeaderFooterView *_header_view=[_tbl headerViewForSection:sender.tag]; //shows nil;

        UIView *view = (UIView *)[_header_view viewWithTag:[sender tag]];
}

答案 2 :(得分:0)

我认为您的标题高度未定义。 试试这个:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
   return 40.0;//the height of your header view
}

这可能有用。

请在您的IBAction方法中放置断点标记,看它是否有效。