2016-04-26 104 views
1

我需要在按钮操作中使用touchup来更改tableview单元格中的标签背景颜色。我在表格视图中创建了自定义单元格,然后将20行添加到单元格中(使用NSMutableArray),然后创建了UIButton,然后以编程方式实现按钮操作(TouchUPInside操作)。表格单元格更改标签背景颜色的按钮操作

我的条件是“当我点击按钮时,标签背景颜色在特定索引标签(特定行)中变为绿色,但在我的代码中,它反映了所有行中的动作。在所有行中都改变了。“

这里是我的代码:

//Array Declaration 
    kioskStatus = [NSMutableArray arrayWithObjects:@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Closed",@"Open",@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Closed",@"Open", nil]; 

//Table Cell Delegates 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *simpleTableIdentifier = @"Cell"; 

CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; // Custom cell identifier for the string 
if (cell == nil) // Check the cell values are nill or not 
{ 
    cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; // Initialize the customTableviewCell identifer to the cell. 
} 


cell.kioskStat.text = [kioskStatus objectAtIndex:indexPath.row]; 


cell.detailsButton.tag=indexPath.row; 

**if(cell.detailsButton.selected==YES) 
{ 
    cell.kioskStat.textColor=[UIColor greenColor]; //if button is selected the label color to change green 
} 
else 
{ 
    cell.kioskStat.textColor=[UIColor blackColor]; //else the label color to change black 
}** 

//Button Action 
[cell.detailsButton addTarget:self action:@selector(detailsButtonAction:) forControlEvents: UIControlEventTouchUpInside]; 

return cell; // returns the cell values to the table view. 
} 


-(void)detailsButtonAction:(UIButton*)sender 

    { 
    [kioskStatus objectAtIndex:sender.tag] 

    NSLog(@"button tapped Index %lu",sender.tag); 

return [self.tableView reloadData]; //Reload the table view. 
} 

这是我的代码。我认为这个按钮的动作是错误的,但我不完全清楚。所以,任何人都可以帮助我解决这个问题。

这是错误假设屏幕截图:

enter image description here

+0

您需要管理特定行中的单击按钮以更改其颜色。 –

+0

在哪里更改标签颜色 – sarosar

+0

@sarosar你想做点像点击按钮? – Mahesh

回答

1

,如果我得到你的问题正确,你想的toogle的UIButton状态,并相应地管理的UILabel的背景色。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 



    kioskStatus = [NSMutableArray arrayWithObjects:@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Closed",@"Open",@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Open",@"Closed",@"Closed",@"Open", nil]; 

    //arrButtonState holds the data of selection state of button for particular cell 
    //Both array kioskStatus & arrButtonState count will be same all time 
    arrButtonState =[[NSMutableArray alloc]init]; 

    //initially All objects in arrBusttonState Will Be "false" 
    for (int i = 0; i < kioskStatus.count; i++) 
    { 
     [arrButtonState addObject:@"False"]; 

    } 
} 

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

    static NSString *simpleTableIdentifier = @"Cell"; 

    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; // Custom cell identifier for the string 
    if (cell == nil) // Check the cell values are nill or not 
    { 
     cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; // Initialize the customTableviewCell identifer to the cell. 
    } 

    //Setting Text 
    cell.kioskStat.text = [kioskStatus objectAtIndex:indexPath.row]; 

    //Setting Tag to button 
    cell.detailsButton.tag=indexPath.row; 

    //if previous or default state of button of this particlular cell is false 
    if ([[arrButtonState objectAtIndex:indexPath.row] isEqualToString:@"False"]) { 
     [cell.detailsButton setSelected:FALSE]; 

    } 
    else 
    { 
     [cell.detailsButton setSelected:TRUE]; 
    } 


    if(cell.detailsButton.selected==YES) 
    { 
     cell.kioskStat.textColor=[UIColor greenColor]; //if button is selected the label color to change green 
    } 
    else 
    { 
     cell.kioskStat.textColor=[UIColor blackColor]; //else the label color to change black 
    } 

    //Button Action 
    [cell.detailsButton addTarget:self action:@selector(detailsButtonAction:) forControlEvents: UIControlEventTouchUpInside]; 

    return cell; // returns the cell values to the table view. 
} 


-(void)detailsButtonAction:(UIButton*)sender 
{ 

    //Check that button state is selected or not 
    if (sender.selected) 
    { 
     //if button is already selected turn it to false state 
     [arrButtonState replaceObjectAtIndex:sender.tag withObject:@"False"]; 

    } 
    else 
    { 
     //if button not selected then turn it to selected state 
     [arrButtonState replaceObjectAtIndex:sender.tag withObject:@"True"]; 

    } 

    return [self.tableView reloadData]; //Reload the table view. 
} 
+0

太棒了。它工作很好。谢谢Mahesh – sarosar

相关问题