【问题标题】:Get the controls (UIButtons) and their tags of a UITableViewCell in a separate method在单独的方法中获取 UITableViewCell 的控件(UIButtons)及其标签
【发布时间】:2013-04-10 07:56:35
【问题描述】:

我有一个 UITableViewCell,我在其中创建了一些按钮(它们的作用类似于单选按钮)并将标签分配给按钮。但是标签不是静态的。它们是动态的。现在,当单击特定单选按钮时,我需要使用一些图像(radio_On.png)设置该按钮并将所有按钮保留为(radio_Off.png)。但是要设置图像,我无法理解如何获取该特定单元格中所有按钮的标签值,因为它们不是静态的。

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

    btTemp1 = [[UIButton alloc]initWithFrame:CGRectMake(10, lblQuestion.frame.origin.y+lblQuestion.frame.size.height+3,17, 17)];
    [btTemp1 addTarget:self action:@selector(radioButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    btTemp1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    [btTemp1 setImage:[UIImage imageNamed:@"radio_button_off.png"] forState:UIControlStateNormal];
    [btTemp1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    btTemp1.titleLabel.font =[UIFont systemFontOfSize:14.f];

    btTemp1.tag=++Optionid;
    [hlcell.contentView addSubview:btTemp1];

    btTemp2 = [[UIButton alloc]initWithFrame:CGRectMake(10, lblOption1.frame.origin.y+lblOption1.frame.size.height,17, 17)];
    [btTemp2 addTarget:self action:@selector(radioButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    btTemp2.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    [btTemp2 setImage:[UIImage imageNamed:@"radio_button_off.png"] forState:UIControlStateNormal];
    [btTemp2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    btTemp2.titleLabel.font =[UIFont systemFontOfSize:14.f];

    btTemp2.tag=++Optionid;
    [hlcell.contentView addSubview:btTemp2];
}

-(IBAction) radioButtonClicked:(UIButton *) sender {
    UIButton *button = (UIButton *)sender;
    NSLog(@"%d", [button tag]);
    NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)
    [[sender superview] superview]];

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    NSMutableArray *cellSection = [self.finalarray objectAtIndex:indexPath.section];

    [sender setImage:[UIImage imageNamed:@"radio-On.png"] forState:UIControlStateNormal];
}

当我检查 TableView 单元格中的其他按钮时,这里一个单选按钮没有被释放。

编辑:

之前我给出了这个代码:

-(IBAction) radioButtonClicked:(UIButton *) sender {
        UIButton *button = (UIButton *)sender;
        NSLog(@"%d", [button tag]);
        NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)
        [[sender superview] superview]];

        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
        NSMutableArray *cellSection = [self.finalarray objectAtIndex:indexPath.section];

UIButton  *btnTemp1 = (UIButton*)[cell viewWithTag:10]; //Static .But now I want dynamic
        UIButton  *btnTemp2 = (UIButton*)[cell viewWithTag:11];//Static .But now I want dynamic
        UIButton  *btnTemp3 = (UIButton*)[cell viewWithTag:12];//Static .But now I want dynamic
        UIButton *btnTemp4=(UIButton *)[cell viewWithTag:13];//Static .But now I want dynamic
        UIButton *btnTemp5=(UIButton *)[cell viewWithTag:14];//Static .But now I want dynamic

        [radioButtonsinaSection addObject:btnTemp1];
        [radioButtonsinaSection addObject:btnTemp2];
        [radioButtonsinaSection addObject:btnTemp3];
        [radioButtonsinaSection addObject:btnTemp4];
        [radioButtonsinaSection addObject:btnTemp5];


    }


    for(int i=0;i<[radioButtonsinaSection count];i++){

        [[radioButtonsinaSection objectAtIndex:i] setImage:[UIImage imageNamed:@"radio_button_off.png"] forState:UIControlStateNormal];

    }
    [sender setImage:[UIImage imageNamed:@"radio-On.png"] forState:UIControlStateNormal];
    }

如何获取单击按钮(单选按钮)的单元格的所有控件(按钮及其标签)?

【问题讨论】:

    标签: iphone uitableview uibutton


    【解决方案1】:

    据我所知,您错过了 radioButtonClicked 方法中的循环,该方法跟踪单击了哪个按钮..您尝试此代码..

       (IBAction) radioButtonClicked:(UIButton *) sender{
    
                   for(int i=0;i&amp;lt;[self.radioButtons count];i++){
                           [[self.radioButtons objectAtIndex:i] setImage:[UIImage    
                                       imageNamed:@&quot;radio-off.png&quot;]  
                                            forState:UIControlStateNormal];
                   }
                   [sender setImage:[UIImage imageNamed:@&quot;radio-On.png&quot;]   
                                         forState:UIControlStateNormal];
    }
    

    我觉得对你有帮助,如果不能再问..

    享受..

    【讨论】:

    • 你能告诉我 self.radioButtons 是在哪里创建的吗?我猜它是一个数组,它告诉一个部分中没有单选按钮...但是如何创建它以及在哪里创建?
    • @arizah radioButtons 已在类中创建..不是在方法中..在您的类的 .h 和 .m 中。所以,试试吧..& 让我知道..
    • 对不起,我没有得到你。我在 .h 本身中创建了按钮(单选按钮)并在 cellforrowatindexpath 中使用它们。但是如何获取单选按钮(例如 4 或 5)(带有标签:not static) 的特定部分?在这个方法中: (IBAction) radioButtonClicked:(UIButton *) sender{ ?
    • 以前我在创建单选按钮时给了静态标签。但现在我给他们像 ++OptionId。所以我不知道特定部分中按钮的标签...
    • @arizah 我知道了。。等一下,我会向您发送适用于任意数量单选按钮的项目副本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2016-08-24
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多