2013-02-24 69 views
7

मैं एक बटन बनाने की कोशिश कर रहा हूं, जिसे एक बार टैप किया गया था, एक और UIView का पॉपओवर दिखाएगा। इस परीक्षण के लिए, मैं अपने viewDidLoad अनुभाग में निम्न कोड है:प्रोग्रामेटिक कोड UIButton कार्रवाई

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [self.hard1 setFrame:CGRectMake(884, 524, 105, 60)]; // set the x,y,width and height based on your specs 
    UIImage *buttonImage = [UIImage imageNamed:@"green.jpg"]; 
    hard1.layer.cornerRadius = 10; 
    hard1.clipsToBounds = YES; 
    [hard1 addTarget: self 
       action: @selector(buttonClicked:) 
    forControlEvents: UIControlEventTouchUpInside]; 
    [self.hard1 setImage:buttonImage forState:UIControlStateNormal]; 
    [self.view addSubview:self.hard1]; 
} 

और नीचे आगे:

- (IBAction) buttonClicked: (id)sender 
{ 
    NSLog(@"Tap"); 
} 

हालांकि, कंसोल लॉग नहीं 'नल' जब मैं बटन हिट। कोई विचार?

उत्तर

12

कोड के इन तीन लाइनों देखें:

hard1.layer.cornerRadius = 10; 
hard1.clipsToBounds = YES; 
[hard1 addTarget: self 
      action: @selector(buttonClicked:) 
forControlEvents: UIControlEventTouchUpInside]; 

आप स्वयं याद कर रहे हैं। तीनों में। वे किया जाना चाहिए:

self.hard1.layer.cornerRadius = 10; 
self.hard1.clipsToBounds = YES; 
[self.hard1 addTarget: self 
      action: @selector(buttonClicked:) 
forControlEvents: UIControlEventTouchUpInside]; 

इसके अलावा, अगर आप इसे प्रोग्राम के पैदा कर रहे हैं, यह नहीं एक IBAction (आईबी इंटरफ़ेस बिल्डर के लिए खड़ा है और इस इंटरफेस बिल्डर में बनाया नहीं है) होना चाहिए।

+0

आह मुझे मूर्खतापूर्ण। आपका बहुत बहुत धन्यवाद! –

+1

अब जब मैं इस पर हूं। जब आप कोई संपत्ति बनाते हैं तो इसे संश्लेषित करने में करें: @synthesize hard1 = _hard1; इस तरह संपत्ति का जिक्र सिर्फ "हार्ड 1" काम नहीं करेगा। यह या तो self.hard1 या _hard1 है (उत्तरार्द्ध केवल सेटटर विधि में उपयोग किया जाना चाहिए) – Odrakir

+0

आपकी मदद के लिए बहुत बहुत धन्यवाद –

0

आपने ईवेंट उत्तरदाता को buttonClicked के रूप में रखा है लेकिन IBAction में आपने buttonTap परिभाषित किया है। यह स्पष्ट रूप से काम करेगा नहीं ...

यह होना चाहिए

[hard1 addTarget: self 
       action: @selector(buttonTap:) 
    forControlEvents: UIControlEventTouchUpInside]; 
+0

मैं लिखने में कोई त्रुटि। मेरा वास्तविक कोड ऊपर संपादित किया गया है, अभी भी काम नहीं करता है। –

3
self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom]; 


[hard1 addTarget: self 
       action: @selector(buttonClicked:) forControlEvents: UIControlEventTouchUpInside]; 

बदलें self.hard1 को hard1