ฉันรู้วิธีเพิ่ม IBAction ลงในปุ่มโดยการลากจากตัวสร้างอินเทอร์เฟซ แต่ฉันต้องการเพิ่มการดำเนินการโดยใช้โปรแกรมเพื่อประหยัดเวลาและหลีกเลี่ยงการสลับไปมาอย่างต่อเนื่อง วิธีแก้ปัญหาอาจจะง่ายมาก แต่ดูเหมือนจะไม่พบคำตอบใด ๆ เมื่อค้นหา ขอบคุณ!
ฉันรู้วิธีเพิ่ม IBAction ลงในปุ่มโดยการลากจากตัวสร้างอินเทอร์เฟซ แต่ฉันต้องการเพิ่มการดำเนินการโดยใช้โปรแกรมเพื่อประหยัดเวลาและหลีกเลี่ยงการสลับไปมาอย่างต่อเนื่อง วิธีแก้ปัญหาอาจจะง่ายมาก แต่ดูเหมือนจะไม่พบคำตอบใด ๆ เมื่อค้นหา ขอบคุณ!
คำตอบ:
ลองสิ่งนี้:
สวิฟต์ 4
myButton.addTarget(self,
action: #selector(myAction),
for: .touchUpInside)
วัตถุประสงค์ -C
[myButton addTarget:self
action:@selector(myAction)
forControlEvents:UIControlEventTouchUpInside];
คุณสามารถค้นหาแหล่งข้อมูลมากมายได้ในเอกสารประกอบของ Apple มีลักษณะที่เป็นเอกสาร UIButton ของมันจะเผยให้เห็นว่า UIButton เป็นลูกหลานของUIControl,ซึ่งดำเนินการวิธีการที่จะเพิ่มเป้าหมาย
-
คุณจะต้องสนใจว่าจะเพิ่มลำไส้ใหญ่หรือไม่myAction
ใน
ภายหลังaction:@selector(myAction)
คำตอบที่รวดเร็ว:
myButton.addTarget(self, action: "click:", for: .touchUpInside)
func click(sender: UIButton) {
print("click")
}
เอกสารประกอบ: https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget
:
เป็นตัวยึดตำแหน่งสำหรับอาร์กิวเมนต์ของฟังก์ชัน เนื่องจากclick
ใช้sender
อาร์กิวเมนต์ซึ่งจะถูกแทนที่ด้วย:
ในสตริงตัวเลือก
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];
ลองสิ่งนี้:
ก่อนอื่นให้เขียนสิ่งนี้ในไฟล์. h ของ viewcontroller
UIButton *btn;
ตอนนี้เขียนสิ่งนี้ในไฟล์. m ของ 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];
เขียนเมธอด viewDidLoad ภายนอกนี้ในไฟล์. m ของตัวควบคุมมุมมองของคุณ
- (IBAction)btnClicked:(id)sender
{
//Write a code you want to execute on buttons click event
}
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 }
สำหรับ Swift 3
สร้างฟังก์ชันสำหรับการทำงานของปุ่มก่อนแล้วจึงเพิ่มฟังก์ชันให้กับเป้าหมายปุ่มของคุณ
func buttonAction(sender: UIButton!) {
print("Button tapped")
}
button.addTarget(self, action: #selector(buttonAction),for: .touchUpInside)
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
}
UIButton
สืบทอดมาจากUIControl
. ที่มีทั้งหมดของวิธีการที่จะเพิ่ม / ลบการกระทำ: UIControl ชั้นอ้างอิง ดูหัวข้อ "การเตรียมและการส่งข้อความการกระทำ" ซึ่งครอบคลุมและ– sendAction:to:forEvent:
– addTarget:action:forControlEvents:
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];