2012-05-14 21 views
5

私はボタンアクションを介してURLを渡したいと思います。なぜなら、コードを介して動的に作成された10個のボタンがあり、そのボタンをクリックすると、対応するボタンごとに特定のURLが割り当てられます。ここに私のコードですUiButtonアクションでどのようなパラメータを渡すことができますか?

NSString *linkUrl = [NSString stringWithFormat:@"%@",[AllrecordG objectForKey:@"Link"]]; 
[leftLabelG addTarget:self action:@selector(clickMe:linkUrl:) forControlEvents:UIControlEventTouchUpInside]; 

-(void)clickMe:(UIButton *)sender{ 
} 

しかし、ここで私は "unused variable linkUrl"と警告します。

私は別の記事を勉強しましたが、誰かが引数のlinkeを渡すことはできないと言いました。誰も私にどのように各ボタンアクションのURLを渡すことができると私はそれらの値を取得する方法を教えてください。 clickMeの定義にある。

ありがとうございます。そのような

答えて

11

サブクラスUIButton:

MyButton.h

@interface MyButton : UIButton 
{ 
    NSString *_linkUrl; 
} 

@property (nonatomic, retain) NSString *linkUrl 

MyButton.m

@implementation MyButton 
@synthesize linkUrl = _linkUrl 

linkUrl渡します

NSString *linkUrl = [NSString stringWithFormat:@"%@",[AllrecordG objectForKey:@"Link"]]; 
[leftLabelG addTarget:self action:@selector(clickMe:) forControlEvents:UIControlEventTouchUpInside]; 
[leftLabelG setLinkUrl:linkUrl]; 

今、あなたはそのようなあなたのアクションでlinkUrlを取得することができます:

-(void)clickMe:(MyButton *)sender{ 
     NSString *url = sender.linkUrl; 
} 
+0

我々はを通じて動的に引数を渡すことはできません、配列のインデックスとして、あなたのボタンにタグを設定します私の要件に応じてアクションセレクタ?同様にNSString * linkUrl = [NSString stringWithFormat:@ "%@"、[AllrecordG objectForKey:@ "ColorLink"]]; [leftLabelG addTarget:自己アクション:@セレクタ(clickMe:linkUrl :) forControlEvents:UIControlEventTouchUpInside]; – Banshi

+0

はい私の答えを更新しました – MathieuF

+0

実際には私のページクラスはすでに@interface homePageです:UIViewController 上記のコードを実装するにはどうすればいいですか? – Banshi

2

はNSArrayの中であなたのlinkurlを置きます。その後、

NSArray *linkUrls = [NSArray arratWithObjects:@"link",@"blah",@"blah"........,nil]; 

はその後

leftLabelG.tag = 1; 
rightLabelG.tag = 2; 

-(void)clickMe:(UIButton *)sender{ 
     NSString *url = [linkUrls objectAtIndex:sender.tag]; 
} 
0

カテゴリを使用

- (void)addTarget:(id)target action:(SEL)action withObject:(id)object forControlEvents:(UIControlEvents)controlEvents; 


-(void)addTarget:(id)target action:(SEL)action withObject:(id)object1 withObject:(id)object2 forControlEvents:(UIControlEvents)controlEvents { 
SEL action_ = [self generateAction:action withObject:object1 withObject:object2]; 
IMP impl = imp_implementationWithBlock(^(id self_) { 
    objc_msgSend(self_, action, self, [object1 copy], [object2 copy]); 
}); 
class_replaceMethod([target class], action_, impl, "[email protected]:@"); 

[self addTarget:target action:action_ forControlEvents:controlEvents]; 

}

関連する問題