仅更改所选按钮的背景,并保持其他按钮的背景与按钮的初始状态相同

问题描述 投票:0回答:2

我有一个集合视图。在集合视图中,有8个单元格。每个单元格都有一个按钮。单击一个按钮我必须在其底部添加一个视图,并将其文本cor从白色更改为黑色。为此,我已经完成了以下代码

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

    if(sender.isSelected){
    [sender setTitleColor:[UIColor colorWithRed:36/255.0 green:71/255.0 blue:113/255.0 alpha:1.0] forState:UIControlStateNormal];
    recipeHeading = (RecipeHeadingCell*)[[sender superview] superview];
    NSIndexPath *path = [_headingCollectionView indexPathForCell:recipeHeading];
    UIView *bottomBorder = [[UIView alloc] initWithFrame:CGRectMake(0, sender.frame.size.height + 2.0f, sender.frame.size.width, 30)];
    bottomBorder.backgroundColor = [UIColor whiteColor];
    [sender addSubview:bottomBorder];
    [_outerCollectionView scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
        sender.selected=false;
    }
    else{
        NSLog(@"not selected");
        sender.selected=true;
 }    
}

但还有一个方案需要解决,即当您在单元格1中选择一个按钮时,其余的(甚至是之前选择的那个)应该自动进入不可选状态,即它们应该具有白色标题颜色,并且应该没有视图他们的底部。我的代码适用于选择的东西,但它不会改变其他未选择的按钮的状态。请在这个方向给我一些指导。任何帮助或建议将不胜感激。谢谢提前!

ios objective-c select button
2个回答
0
投票

它需要为每个具有选择状态的true或false值的单元格添加一个模型(布尔数组并在cellForRowAtIndexpath中访问它),并且当单击一个单元格时刷新整个表格以重绘

@interface ViewController ()

{

   NSMutableArray*allValues;

}

在viewDidLoad中

  allValues = [NSMutableArray new];

  for(int i = 0 ;i<YourTableViewArrayCount;i++)
  {
     [allValues addObject:[NSNumber numberWithBool:NO]];
  }

和tableview dataSource

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

  bool d = [allValues[indexPath.row] boolValue];

  if(d)
  {
      // cell selected
  }
  else
  {
        // cell not selected
  }

  /// implement remaining here

 }

注意:在UITableViewCell自定义类中单击一个单元格并使用NotificationCenter或任何观察者重新加载tableView时,将此数组设为全局并更改其值


0
投票

创建集合视图时,将按钮标记提供为单元格的indexPath.item。单击按钮时,将按钮标记保存在全局值中(让我们将其命名为selectedRow并最初将值设置为-1)并重新加载集合视图。如果selectedRow和indexPath.item相同,则在索引处的项目的单元格中显示边框和视图,否则将其隐藏。

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.