UIButton target:action:Selector Argument

时间:2015-03-03 13:18:45

标签: ios objective-c uibutton target-action

我有这个方法:

- (void)retweet:(NSString *)idString {
    STTwitterAPI *twitter;
    [twitter postStatusRetweetWithID:idString successBlock:^(NSDictionary *status) {
        UIAlertView *retweetSuccess = [[UIAlertView alloc]initWithTitle:@"Retweeted!" message:@"You have retweeted this tweet." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [retweetSuccess show];

    } errorBlock:^(NSError *error){

    }];
}

我的tableview单元格中也有一个uibutton,所以我使用的是[cell.retweetButton addTarget:self action:@selector(retweet:)forControlEvents:UIControlEventTouchUpInside];

如何使用我的idString作为带参数的方法参数的参数?

2 个答案:

答案 0 :(得分:0)

如果id字符串来自button,则将action方法参数更改为paramButton并访问它。 如果它来自其他地方那么你需要简单地从它来自的地方获取它。

无论如何,你的action方法必须有:(UIButon *)paramButton参数。 ((id)发送者也可以接受作为替代)。

答案 1 :(得分:0)

使用objective c associated objects

#import <objc/runtime.h>

static const void *idStringKey = &idStringKey;

@implementation UIButton (idString)

- (void)setIDString:(NSString *)idString
{
   objc_setAssociatedObject(self, idStringKey, idString, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (NSString *)idString
{
   return objc_getAssociatedObject(self, idStringKey);
}

@end

使用

cell.retweetButton.idString = @"Any string here"