ฉันได้เพิ่ม target-action-forControlEvents: ลงใน UIButton แล้ว ฉันต้องการลบสิ่งเหล่านี้ทั้งหมดในครั้งเดียวโดยไม่ต้องจัดสรรคืน ฉันจะตั้งเป้าหมายใหม่
เป็นไปได้และฉันจะไปเกี่ยวกับเรื่องนี้?
ฉันได้เพิ่ม target-action-forControlEvents: ลงใน UIButton แล้ว ฉันต้องการลบสิ่งเหล่านี้ทั้งหมดในครั้งเดียวโดยไม่ต้องจัดสรรคืน ฉันจะตั้งเป้าหมายใหม่
เป็นไปได้และฉันจะไปเกี่ยวกับเรื่องนี้?
คำตอบ:
โทรRemoveTarget: action: forControlEvents:,ส่งผ่านศูนย์สำหรับเป้าหมาย, NULL สำหรับการดำเนินการและใช้หน้ากากควบคุมที่ตั้งค่าบิตทั้งหมด (UIControlEventAllEvents)
Objective-C
[someControl removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
สวิฟท์ 2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
สวิฟท์ 3
button.removeTarget(nil, action: nil, for: .allEvents)
คำตอบของ @ progrmr ใน Swift 2:
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
และรวดเร็ว 3:
button.removeTarget(nil, action: nil, for: .allEvents)
หมายเหตุ: Swift ไม่มีNULL
ดังนั้นฉันทดสอบแทนที่ด้วยnil
และดูเหมือนว่าจะทำงานได้ดี
removeTarget(nil, action: nil, for: .allEvents)
nil
หรือNULL
จะทั้งการขัดแย้งครั้งแรกและครั้งที่สองใน Objective-C เกินไปและมันจะทำงาน ฉันเชื่อว่าทั้งสองถูกกำหนดเป็น(void*) 0
(หรืออย่างน้อยที่สุดประเมินว่าเท่ากับ)
สวิฟท์:
btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
สวิฟท์ 2:
actionButton.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
สวิฟท์ 3 และ 4:
actionButton.removeTarget(nil, action: nil, for: .allEvents)
Objective-C:
[actionButton removeTarget: nil action: NULL forControlEvents: UIControlEventAllEvents];
หวังว่ามันจะช่วย
- removeTarget:action:forControlEvents:
วิธีนี้จะหยุดการส่งเหตุการณ์ไปยังวัตถุเป้าหมายที่ระบุ
การระบุวัตถุที่ถูกต้องในพารามิเตอร์เป้าหมายวิธีนี้จะหยุดการนำส่งเหตุการณ์ที่ระบุไปยังวิธีการดำเนินการทั้งหมดที่เกี่ยวข้องกับวัตถุนั้น
การระบุศูนย์สำหรับพารามิเตอร์เป้าหมายวิธีนี้จะป้องกันการส่งมอบเหตุการณ์เหล่านั้นไปยังวิธีการดำเนินการทั้งหมดของวัตถุเป้าหมายทั้งหมด
วัตถุประสงค์ C:
[_myButton removeTarget: //any validObject (or) nil
action:nil
forControlEvents:UIControlEventAllEvents];
รวดเร็ว:
myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)
สำหรับรายละเอียดเพิ่มเติม https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents :