如何在iOS单元格中设置按钮标签?

时间:2016-02-19 14:04:24

标签: ios objective-c xcode7

我尝试为单元格内的按钮设置tag

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     [cell.btnWithIdCell setTag: (int) self.responseObject[@"results"][indexPath.row][@"id"]];
}

点击按钮后,我尝试获取tag

- (IBAction)open:(id)sender {
    NSString* tagString = [NSString stringWithFormat:@"%d", [sender tag]];
}

它给了我错误的号码tagString

如何为响应对象设置按钮标记?

4 个答案:

答案 0 :(得分:2)

在单元格中设置按钮的标记:

cell.btnWithIdCell.tag = indexPath.row;

答案 1 :(得分:0)

只需使用您的响应对象(应该是可以分配给标记的类型)代替indexPath,并根据应用程序要求在按钮操作中使用逻辑。

答案 2 :(得分:0)

什么是"错误"标签?因为tag是一个NSInteger,我相信你的调用(int) self...[indexPath.row][@"id"]会返回一个引用对象,它不是NSInteger,但可能是NSNumber *

因此,在设置按钮标记时,您需要在该通话结束时添加[... integerValue]

答案 3 :(得分:-1)

在您的IBAction中

请使用- (IBAction)open:(UIButton *)sender - (IBAction)open:(id)sender  如果没有工作,那么使用另一种方式在IBAction中获取数据如下方法非常简单且非常快速地tag

#import <objc/runtime.h>

然后使用tableview方法和IBAction相同的方法,如下面的代码

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

    objc_setAssociatedObject(cell.btnWithIdCell, @"yourObjKey", self.responseObject[@"results"][indexPath.row][@"id"], OBJC_ASSOCIATION_RETAIN_NONATOMIC);

    [cell.btnWithIdCell addTarget:self action:@selector(open:) forControlEvents:UIControlEventTouchUpInside];
}

- (IBAction)open:(UIButton *)sender {

    NSString *tagString = objc_getAssociatedObject(sender, @"yourObjKey");
}