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

この整数タグには、クラス/構造/bigintを表すものへのポインタ(32ビットアドレスの場合)を格納できます。

例えば:

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

後:

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

Saadが言ったように、タグとして渡すことはできません。ここでNSDecimal番号を使用できます。@Saadは、精度が低下するため、doubleを使用できません。

于 2012-05-11T12:50:00.253 に答える
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 に答える