2012-05-14 14 views
5

मैं बटन एक्शन के माध्यम से एक यूआरएल पास करना चाहता हूं, क्योंकि मेरे पास 10 बटन हैं जो गतिशील रूप से कोड के माध्यम से बनाए जाते हैं और क्लिक करने पर प्रत्येक विशिष्ट बटन के लिए एक विशिष्ट यूआरएल असाइन किया जाता है। यहां मेरा कोडमैं यूआईबटन कार्रवाई में किसी प्रकार का पैरामीटर कैसे पास कर सकता हूं?

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

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

लेकिन यहां मुझे "अप्रयुक्त चर लिंक" के रूप में चेतावनी मिलती है।

मैंने विभिन्न लेखों का अध्ययन किया है लेकिन किसी ने बताया है कि तर्क को पारित करना संभव नहीं है। कोई भी मुझे बता सकता है कि मैं प्रत्येक बटन कार्रवाई के लिए यूआरएल कैसे पास कर सकता हूं और मैं उन मानों को कैसे प्राप्त कर सकता हूं। क्लिक मेरी परिभाषा में।

अग्रिम धन्यवाद।

उत्तर

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

हम गतिशील के माध्यम से तर्क पारित नहीं हो सकता मेरी आवश्यकता के अनुसार कार्रवाई चयनकर्ता? उस एनएसएसटींग * लिंक यूआरएल = [एनएसएसटींग स्ट्रिंग विथफॉर्मैट: @ "% @", [ऑलरेकॉर्डजी ऑब्जेक्टफोरकी: @ "कलरलिंक"]]; [leftLabelG addTarget: self action: @selector (क्लिक करें: linkUrl :) forControlEvents: UIControlEventTouchUpInside]; – Banshi

+0

हाँ मैं अपने जवाब को नवीनीकृत किया है – MathieuF

+0

असल में मेरा पेज वर्ग पहले से ही @interface मुख्य पृष्ठ है: 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]; 

}

संबंधित मुद्दे

 संबंधित मुद्दे