Swift UITabBarItem เป็น UIButton

ฉันพยายามใช้ UITabBar และตอนนี้ฉันไม่สามารถรับการติดต่อกลับจากวิธีการเมื่อเลือกรายการได้ มีโอกาสที่จะสร้าง @IBAction func หรือไม่ หรือฉันต้องทำอะไรอย่างอื่น?


person Luca Archidiacono    schedule 17.08.2015    source แหล่งที่มา
comment
เป็นไปได้ที่ซ้ำกันของ รับการติดต่อกลับ/ รันโค้ดบางส่วนเมื่อมีการคลิกแท็บบน Tab Bar   -  person nhgrif    schedule 17.08.2015


คำตอบ (3)


ในการใช้ปุ่ม UITabBar ตัวควบคุมมุมมองของคุณควรสอดคล้องกับโปรโตคอล UITabBarDelegate คุณต้องดำเนินการ:

สวิฟท์:

func tabBar(_ tabBar: UITabBar, didSelectItem item: UITabBarItem!)

วัตถุประสงค์ -c:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item

คุณต้องตั้งค่าผู้รับมอบสิทธิ์ (tabBar.delegate = self) ใน viewDidLoad ของ ViewController ของคุณ

แก้ไข: คำตอบ Swift 3:

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

}
person Floris M    schedule 17.08.2015

ตัวควบคุมมุมมองของคุณควรเป็นไปตาม UITabBarDelegate และนำไปใช้:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;

วิธีการนี้เรียกว่าเมื่อผู้ใช้เลือกแท็บ (เช่น UITabBarItem)

person Adam Waite    schedule 17.08.2015
comment
ฉันต้องเรียกเมธอดนี้อย่างชัดเจนในโค้ดหรือไม่ หรือเมื่อฉันนำไปใช้ใน UITabBarDelegate มันจะถูกเรียกโดยอัตโนมัติหรือไม่ - person Luca Archidiacono; 17.08.2015
comment
UITabBar จะส่งข้อความนี้ถึงผู้รับมอบสิทธิ์เมื่อผู้ใช้เลือกแท็บ - person Adam Waite; 17.08.2015
comment
class MyClass: UITabBarItem, UITabBarDelegate { class MyClass: UITabBar, UITabBarControllerDelegate, UITabBarDelegate { การใช้งานใดต่อไปนี้ถูกต้อง การเข้ารหัสนี้ถูกต้องด้วย: func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { FYI ฉันยกเลิกการเชื่อมต่อคลาสเริ่มต้นและเชื่อมต่อกับคลาสที่กำหนดเองใหม่และยังคงใช้งานไม่ได้ (ใน main.storyboard) - person Luca Archidiacono; 17.08.2015
comment
เหตุใดคุณจึงจัดคลาสย่อย UITabBarItem - person Adam Waite; 17.08.2015
comment
รายการแถบแท็บไม่ควรเป็นตัวแทนให้กับแถบแท็บที่เปิดอยู่ คุณอาจกำลังเขียนตัวเองเข้าสู่วงจรการรักษา - person nhgrif; 17.08.2015
comment
@AdamWaite ฉันเพิ่งเริ่มเขียนโปรแกรมอย่างรวดเร็วเมื่อ 1 หรือ 2 สัปดาห์ที่แล้วดังนั้นฉันจึงไม่รู้ว่าฉันกำลังคลาสย่อยอยู่ ฉันจะแก้ไขปัญหานี้ได้อย่างไร? - person Luca Archidiacono; 17.08.2015
comment
@nhgrif คุณหมายถึงอะไรกับสิ่งนั้น? ฉันควรทำอย่างไรอย่างอื่น? ปล่อยให้มันเป็นคลาสเริ่มต้นหรือไม่? - ฉันไม่เข้าใจมันชัดเจน - person Luca Archidiacono; 17.08.2015
comment
ฉันคิดว่าคุณต้องมีหนังสือและเรียนรู้พื้นฐานก่อนสิ่งอื่นใด - person Adam Waite; 17.08.2015

ในที่สุดฉันก็แก้ไขปัญหาได้ ฉันมีปัญหากับคลาส Delegator และคลาสปกติ วิธีนี้แก้ไขปัญหาของฉันได้: tabBar.delegate = self ในคลาส Main-Controller

person Luca Archidiacono    schedule 17.08.2015