当我们点击UIbutoon时如何更改TableList UILabel backGroundColor?

时间:2015-12-10 02:35:28

标签: ios objective-c uitableview

您好我在iOS上非常新,我在Viewcontroller上创建了一个表列表,在我的tablelist行中,我以编程方式添加了一个UIlabel,确定没问题。

我已经在我的" self.view"上以编程方式添加了一个UI按钮。

这里我的主要要求是当我点击该按钮时,我想要更改我的tablelist行中添加的UIlabel背景颜色。

为此,我尝试了下面的代码,但UIlabel backgroudcolor没有改变。

请帮帮我。

我的代码: -

<?php
$_SERVER['REMOTE_ADDR'], msg => $_GET['m']));

$foo =  array("time" => time(), "who" => $_SERVER['REMOTE_ADDR'], msg => $_GET['m']);
//http://php.net/manual/en/function.file-put-contents.php
file_put_contents("foo.json", json_encode($foo, JSON_PRETTY_PRINT), FILE_APPEND | LOCK_EX));
?>

3 个答案:

答案 0 :(得分:1)

如果您想更改所有单元格或部分单元格上的标签颜色,您的问题并不明确。

无论如何,这个颜色变化必须是cellForRowAtIndexPath,这是更新/创建单元格的地方。

您可以创建一个变量来通知您是否要进行颜色更改,并在cellForRowAtIndexPath上进行检查。

@implementation ViewController {
    UITableView *tableView;
    bool changeColor;
}

-(void)Method:(id)sender{
  changeColor != changeColor;
[tableview reloadData];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        cell.textLabel.text = [yourarray objectAtIndex:indexPath.row];
        UILabel label = [[UILabel alloc] initWithFrame:CGRectMake(40, 30, 300, 50)];
        [cell.contentView addSubview:label];

    }


   if (changeColor){ 
      label.backgroundColor = [UIColor redcolor];
   }else{
      label.backgroundColor = [UIColor clearColor];
   }


return cell;
}

如果您想要更改特定标签,可以创建一个nsarray来控制将要更改的单元格

答案 1 :(得分:0)

@interface ViewController (){

    UILabel *label;
    NSMutableArray *lableArray;
}

@end

@implementation ViewController {

    UITableView *tableView;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self tablelistCreation];

    lableArray=@[].mutableCopy;
}

//UItableView createtion

-(void)tablelistCreation{

    tableView = [[UITableView alloc] initWithFrame:CGRectMake(10, 10, 300, self.420) style:UITableViewStylePlain];

    tableView.delegate = self;
    tableView.dataSource = self;

    [self.view addSubview:tableView];
}

//Delegate methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        label = [[UILabel alloc] initWithFrame:CGRectMake(40, 30, 300, 50)];
        label.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview:label];

        [lableArray addObject:label];

    }

    cell.textLabel.text = [yourarray objectAtIndex:indexPath.row];

//    
//    label = [[UILabel alloc] initWithFrame:CGRectMake(40, 30, 300, 50)];
//    label.backgroundColor = [UIColor clearColor];
//    [cell.contentView addSubview:label];

    return cell;

}

//UIbutton createtion

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self
           action:@selector(aMethod:)
 forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button .backgroundColor = [UIColor orangecolor];
button.frame = CGRectMake(100, 440, 30, 30);
[self.view addSubview:button];

//button action

-(void)Method:(id)sender{

    [lableArray makeObjectsPerformSelector:@selector(setBackground:) withObject:[UIColor redColor]];
//    label.backgroundColor = [UIColor redcolor];

}

单元格是可重用的,所以创建应该放在cell == nil条件下,每次运行条件都会创建一个新的UILabel,如果你想要改变所有这些,你应该把它们放在一个集合中,比如NSMutableArray ..

答案 2 :(得分:0)

import&#34; ViewController.h&#34;

@interface ViewController ()
{

  UILabel *label;
  BOOL isTouchButton;

}

@end

@implementation ViewController {

    UITableView *tableView;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    //UIbutton createtion

   UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
   [button addTarget:self 
           action:@selector(aMethod:)
   forControlEvents:UIControlEventTouchUpInside];
   [button setTitle:@"Show View" forState:UIControlStateNormal];
   button .backgroundColor = [UIColor orangecolor];
   button.frame = CGRectMake(100, 440, 30, 30);
   [self.view addSubview:button];

    [self tablelistCreation];
}

//UItableView createtion

-(void)tablelistCreation{

    tableView = [[UITableView alloc] initWithFrame:CGRectMake(10, 10, 300, self.420) style:UITableViewStylePlain];

    tableView.delegate = self;
    tableView.dataSource = self;

    [self.view addSubview:tableView];
}

//Delegate methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    }

    cell.textLabel.text = [yourarray objectAtIndex:indexPath.row];


    label = [[UILabel alloc] initWithFrame:CGRectMake(40, 30, 300, 50)];
    label.backgroundColor = [UIColor clearColor];

    label.tag = indexPath.row;

    if(!isTouchButton)
    {
      cell.labelUserName.backgroundColor = [UIColor clearColor];
    }
    else{
      cell.labelUserName.backgroundColor = [UIColor redColor];
    }

    [cell.contentView addSubview:label];

    return cell;

}


//button action

-(void)Method:(id)sender
{
  if(!isTouchButton)
  {
    [tablelistCreation reloadData];
    isTouchButton = YES;
  }
  else{
    [tablelistCreation reloadData];
    isTouchButton = NO;
  }

}