使用大数字

时间:2012-05-11 12:14:14

标签: iphone objective-c ios

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

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

在此整数标记中,您可以将指针(32位地址的大小写)存储到类/结构/无论代表bigint的任何内容。

例如:

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

后:

MyBigInt *bigInt = (MyBigInt *)button.tag;
...
[bigInt release];

答案 2 :(得分:0)

你不能像Saad所说的那样将它作为标签传递。您可以在此处使用NSDecimal numbers 。 @Saad不能使用double,因为它会失去精度。

答案 3 :(得分:0)

我将在这里做一些假设,因为我只是通过类似的东西。

  1. 带有操作的UIButton位于UITableViewCell。
  2. 您拥有所有数据的基础来源(即包含所有数据的数组)。
  3. 您可以轻松访问tableView。
  4. 首先,您需要获取包含按钮的单元格:

    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];
    

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