आप प्रोग्राम को xcode में प्रोग्राम बटन पर कैसे जोड़ते हैं


105

मुझे पता है कि इंटरफ़ेस बिल्डर से खींचकर एक बटन में IBAction कैसे जोड़ा जाता है, लेकिन मैं समय बचाने के लिए और लगातार आगे और पीछे स्विच करने से बचने के लिए प्रोग्रामेटिक रूप से जोड़ना चाहता हूं। समाधान शायद वास्तव में सरल है, लेकिन जब मैं इसे खोजता हूं तो मुझे कोई जवाब नहीं मिल सकता है। धन्यवाद!

जवाबों:


222

इसे इस्तेमाल करे:

स्विफ्ट 4

myButton.addTarget(self,
                   action: #selector(myAction),
                   for: .touchUpInside)

उद्देश्य सी

[myButton addTarget:self 
             action:@selector(myAction) 
   forControlEvents:UIControlEventTouchUpInside];

आप Apple के प्रलेखन में जानकारी का एक समृद्ध स्रोत पा सकते हैं। UIButton के दस्तावेज़ीकरण पर एक नज़र डालें , इससे पता चलेगा कि UIButton UIControl का वंशज है , जो लक्ष्य जोड़ने के लिए विधि को लागू करता है

-

आप के लिए भुगतान ध्यान करने की आवश्यकता होगी कि क्या ऐड पेट है या नहीं के बाद myActionमें action:@selector(myAction)

यहाँ संदर्भ है


अगर मेरा बटन दबाया जाता है, तो मैं चयनकर्ता को एक पैरामीटर पास करना चाहता हूं (उदाहरण के लिए, मेरे पास UITableViewCell के अंदर एक बटन है और मैं उस सेल में ऑब्जेक्ट को पास करना चाहता हूं जब सेल का बटन दबाया जाता है)?
अप्रैल को

1
@acecapades मुझे लगता है कि आप दो चीजों को मिला रहे हैं। आप एक paramater संलग्न नहीं कर सकते जैसे आप PerformSelector के साथ कर सकते हैं। UIControl वंशज UIButton द्वारा उपयोग किए जाने वाले एक्शन पैटर्न को एक निश्चित चयनकर्ता के साथ कुछ लक्ष्य को सूचित करना है जब नियंत्रण को चालू किया जाता है। जब आपके मामले में ऐसा होता है, तो आप सुपरवाइज को देख सकते हैं कि कौन आपके बटन को एनकैप्सुलेट कर रहा है और मॉडल रिलेशन के लिए टेबलसेल को हल करने के लिए एक विधि पूछ सकता है और फिर आप जो चाहें उसके साथ कर सकते हैं।
निक वीवर

1
समझा। यह समझ आता है। मुझे लगता है कि मैं समझता हूं कि आप क्या कह रहे हैं। टिप निक के लिए धन्यवाद!
इस्कैप्ड

क्या कोई इसमें तेजी से अनुवाद कर सकता है?

23

स्विफ्ट उत्तर:

myButton.addTarget(self, action: "click:", for: .touchUpInside)

func click(sender: UIButton) {
    print("click")
}

प्रलेखन: https://developer.apple.com/documentation/uikit/uicontrol/1618259--dadgetget


UIControl.addTarget पर कॉल में "क्लिक" के बाद ":" क्या है?
dumbledad

1
:फ़ंक्शन तर्कों के लिए चयनकर्ताओं के पास प्लेसहोल्डर हैं। चूंकि तर्क clickलेता senderहै, इसलिए इसे :चयनकर्ता स्ट्रिंग में बदल दिया जाता है ।
इतन

इसने मेरे लिए हाल ही में स्विफ्ट 3. बटन के लिए काम किया। बटन (स्व: एक्शन (# एक्शन: #selector (ViewController.click)), इसके लिए: UIControlEvents.touchUpInside) func क्लिक () "प्रिंट" ("क्लिक")} धन्यवाद @Gucuco Neves हमें इंगित करने के लिए। नीचे सही ट्रैक
uplearnedu.com

14
CGRect buttonFrame = CGRectMake( 10, 80, 100, 30 );
        UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];
        [button setTitle: @"My Button" forState: UIControlStateNormal];
        [button addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
        [button setTitleColor: [UIColor redColor] forState: UIControlStateNormal];
[view addSubview:button];

क्या 2 या अधिक क्रियाओं को जोड़ना संभव है?
ErasmoOliveira

9

इसे इस्तेमाल करे:

पहले इसे अपने .h फ़ाइल में viewcontroller के लिखें

UIButton *btn;

अब इसे अपने .m file of viewcontrollers viewDidLoad में लिखें।

btn=[[UIButton alloc]initWithFrame:CGRectMake(50, 20, 30, 30)];
[btn setBackgroundColor:[UIColor orangeColor]];
//adding action programatically
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];

अपने व्यू कंट्रोलर की .m फ़ाइल में इसे बाहर का दृश्य विधि विधि से लिखें

- (IBAction)btnClicked:(id)sender
{
   //Write a code you want to execute on buttons click event
}

8
 CGRect buttonFrame = CGRectMake( x-pos, y-pos, width, height );   //
 CGRectMake(10,5,10,10) 

 UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];

 button setTitle: @"My Button" forState: UIControlStateNormal];

 [button addTarget:self action:@selector(btnClicked:) 
 forControlEvents:UIControlEventTouchUpInside];

 [button setTitleColor: [UIColor BlueVolor] forState:
 UIControlStateNormal];

 [view addSubview:button];




 -(void)btnClicked {
    // your code }

6

स्विफ्ट 3 के लिए

पहले बटन एक्शन के लिए एक फंक्शन बनाएं और फिर फंक्शन को अपने बटन टारगेट में जोड़ें

func buttonAction(sender: UIButton!) {
    print("Button tapped")
}

button.addTarget(self, action: #selector(buttonAction),for: .touchUpInside)

3
UIButton *btnNotification=[UIButton buttonWithType:UIButtonTypeCustom];
btnNotification.frame=CGRectMake(130,80,120,40);
btnNotification.backgroundColor=[UIColor greenColor];
[btnNotification setTitle:@"create Notification" forState:UIControlStateNormal];
[btnNotification addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnNotification];


}

-(void)btnClicked
{
    // Here You can write functionality 

}

कृपया बताएं कि आपकी नमूना कैसे मदद कर सकती है, कुछ टिप्पणियां प्रदान करें।
Nogard

UIButton * btnNotification = [UIButton बटनWithType: UIButtonTypeCustom]; btnNotification.frame = CGRectMake (130,80,120,40); // बटन फ़्रेम सेटिंग btnNotification.backgroundColor = [UIColor greenColor]; [btnNotification setTitle: @ "नोटिफ़िकेशन बनाएँ" forState: UIControlStNNormal]; // बटन के लिए शीर्षक सेट करें [btnNotification addTarget: self क्रिया: @selector (btnClicked) forControlEvents: UIControlEventTouchUpInside/p://side/sift/ btnNotification];} - (शून्य) btnClicked {// यहां आप कार्यक्षमता लिख ​​सकते हैं}
user2677311

- (शून्य) btnClicked {// यहां जो आप कभी भी चाहते हैं कि आप बटन के लिए कार्रवाई निर्धारित कर सकते हैं // उदाहरण: अगले viewcontroller पर जाएं nextviewController * nextPage = [nextviewController आवंटित] init]; [self.navigationController pushviewcontroller: nextPage एनिमेटेड: YES]; }
user2677311

2

UIButtonसे विरासत में मिला है UIControl। क्रियाओं को जोड़ने / निकालने की सभी विधियाँ हैं: UIControl Class Reference । "तैयारी और भेजना कार्रवाई संदेश" अनुभाग देखें, जो कवर करता है – sendAction:to:forEvent:और – addTarget:action:forControlEvents:


1
 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
       action:@selector(aMethod1:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];   
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.