在运行时

时间:2015-05-30 10:57:48

标签: ios objective-c iphone uitableview

我已经使用下面的代码设置了标题,但是当我点击标题上添加为子视图的按钮时,我想在运行时再次更改标题的颜色。 请提供代码,提前谢谢:)

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

    header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, _tableView.bounds.size.width, 50)];
 header.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"homeCellHeaderBackGround.png"]];

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 100, 30)];
    label.text = _array[section][@"name"];
    label.textColor = [UIColor whiteColor];


    [header addSubview:label];


    UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(230, 10, 70, 35)];
    [button addTarget:self action:@selector(onExpandButton:) forControlEvents:UIControlEventTouchUpInside];
    //[button setTitle:@"Expand" forState:UIControlStateNormal];
    [button setTag:section];

    [header addSubview:button];

    return header;
}

3 个答案:

答案 0 :(得分:1)

您可以在运行时修改它:

<强>第一

你可以声明一个全局变量/如:

@property (nonatomic) UIView *tableHeader;

并将其设置在-(void)viewDidLoad

喜欢

self.tableView.tableHeaderView = self.tableHeader;

或使用delagate:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
   return self.tableHeader;
}

并随意修改,但不要忘记重新加载表格标题,可能会[tableView reloadSections:NSIndexSet withRowAnimation:UITableViewRowAnimation];

<强>但是

在您的情况下,您可以检索/获取在委托中创建的tableHeader:

-(UIView *)tableView:tableView viewForHeaderInSection:section

通过

UIView *tableHeaderView = [self tableView:yourTableView viewForHeaderInSection:yourSection];

然后修改tableHeaderView ..

或简单地通过以下方式重新分配tableHeader:

yourTableView.tableHeaderView = tableHeaderView;

你单独使用header,因为我可以看到它是一个全局变量.. 直接更改/更新,如:

header.backgroundColor = [UIColor yourNewColor];

希望我帮助过你......快乐的编码,干杯......

答案 1 :(得分:0)

-(IBAction)onExpandButton:(UIButton *)sender
{
    UIView *tmpView = [self.YourTableViewName headerViewForSection:sender.tag];
    tmpView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"homeCellHeaderBackGround.png"]];
}

- 您从表格视图标题中获取了section方法的视图。在视图上设置图像视图后。

答案 2 :(得分:0)

您可以通过以下代码更改节标题的背景颜色:

- (IBAction)onExpandButton:(id)sender {
   UIView *header = ((UIButton *)sender).superView;
   header.backgroundColor = <Whatever UIColor you like>;
   ...
}