0

我有一个像 12345678910111213 这样的数字,我需要将它从一个方法(cellForRow)传递给另一个(按钮操作方法)。我曾经使用的最简单的方法是通过按钮标签传递它。在这种情况下,这是不可能的(?)。我也可以为它创建一个属性,但是封装呢?我想知道真正正确(最好是简单)的方式来做这样的事情。提前致谢!

4

4 回答 4

1

好吧,您实际上可以将值附加到UIButton. 当您拥有要传递的值并且您有对按钮的引用时:

static char kMyObject;

objc_setAssociatedObject(myButton, &kMyObject, [NSNumber numberWithInt:myInt], OBJC_ASSOCIATION_RETAIN_NONATOMIC);

另一方面,当您收到按钮为 id 的操作时:

- (void)myAction:(id)sender
{
   UIButton *myButton = (UIButton*)sender;
   NSNumber *number=objec_getAssociatedOject(myButton,&kMyObject);
}
于 2012-05-11T12:29:06.073 回答
0

正如萨德所说,您不能将其作为标签传递。您可以在此处使用NSDecimal 数字。@Saad 不能使用双精度,因为它会失去精度。

于 2012-05-11T12:50:00.253 回答
0

在这个整数标签中,您可以将指针(32 位地址的情况)存储到类/结构/代表 bigint 的任何内容。

例如:

UIButton *button = [UIButton ...];
button.tag = (int)[[MyBigInt alloc] initWithString:@"12131312312312312"];

后:

MyBigInt *bigInt = (MyBigInt *)button.tag;
...
[bigInt release];
于 2012-05-11T12:29:07.753 回答
0

我将在这里做一些假设,因为我只是在经历类似的事情时。

  1. 带有操作的 UIButton 位于 UITableViewCell 中。
  2. 您拥有所有数据的基础来源(即,包含所有数据的数组)。
  3. 您可以轻松访问您的 tableView。

首先,您需要获取包含按钮的单元格:

UITableViewCell *cell = nil;
for (UIView *view = sender; view; view = view.superview) {
    if ([view isKindOfClass:[UITableViewCell class]]) {
        cell = (UITableViewCell *)view;
        break;
    }
}

接下来,您需要获取该单元格的 indexRow:

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

最后,您必须访问您的数据:

ModelClass modelObject* obj = [self.data objectAtIndex:indexPath.row];

现在,您可以对模型进行所需的任何更改。

于 2012-05-11T14:10:50.173 回答