Sobes.tech
Junior — Middle

Оё имкон дорад, ки ҳодисаро аз як View ба дигар дар контексти ҳозир интиқол додан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

ใน iOS การส่งเหตุการณ์โดยตรงจาก View หนึ่งไปยังอีก View ในบริบทปัจจุบันโดยทั่วไปไม่ใช่แนวปฏิบัติ เนื่องจาก View ไม่ควรมีปฏิสัมพันธ์โดยตรงกันและกัน แทนที่จะใช้แนวทางสถาปัตยกรรมที่เหตุการณ์ถูกส่งผ่านตัวควบคุมหรือผู้กลางอื่น ๆ

ตัวอย่างเช่น หากต้องการส่งเหตุการณ์จาก UIView หนึ่งไปยังอีกอันหนึ่ง สามารถ:

  • ใช้ delegates (แบบแผน delegate) ซึ่งวัตถุหนึ่งแจ้งอีกวัตถุหนึ่งผ่านโปรโตคอล
  • ใช้ NotificationCenter สำหรับการส่งเหตุการณ์แบบแพร่กระจาย
  • ใช้ closures สำหรับ callback

ตัวอย่างกับ NotificationCenter:

// ส่งการแจ้งเตือน
NotificationCenter.default.post(name: Notification.Name("CustomEvent"), object: nil)

// สมัครรับการแจ้งเตือน
NotificationCenter.default.addObserver(self, selector: #selector(handleEvent), name: Notification.Name("CustomEvent"), object: nil)

@objc func handleEvent() {
    // จัดการเหตุการณ์
}

ด้วยวิธีนี้ เหตุการณ์จะถูกส่งผ่านระบบการแจ้งเตือนหรือผู้กลาง ไม่ใช่โดยตรงระหว่าง View.