Xcode - ส่งคุณสมบัติเพื่อดูคอนโทรลเลอร์ในกระดานเรื่องราว

ฉันต้องการส่งผ่านคุณสมบัติไปยังตัวควบคุมมุมมองที่สร้างจากมุมมองคอนเทนเนอร์ในกระดานเรื่องราว ปัญหาคือฉันไม่รู้ว่าจะทำมันได้อย่างไร

สี่เหลี่ยมสีน้ำเงินคือพื้นที่ที่ฉันมีมุมมองคอนเทนเนอร์สองรายการ โดยแต่ละอันอ้างอิงถึงตัวควบคุมมุมมอง (อันหนึ่งคือตัวควบคุมมุมมองตารางแบบกำหนดเองที่ด้านบนและฉันสนใจ และอีกอันหนึ่งคือตัวควบคุมมุมมองด้านล่าง)

ปัญหาคือตัวควบคุมมุมมองตารางแบบกำหนดเองของฉันต้องการคุณสมบัติบางอย่าง ฉันต้องการส่งผ่านคุณสมบัติจากคลาสที่ฉันสร้างสตอรี่บอร์ด (กระดานเรื่องราวถูกเรียกจากคลาสถัดไป) ตัวควบคุมมุมมองที่มีมุมมองคอนเทนเนอร์ถูกสร้างอินสแตนซ์ดังที่แสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Phenotype" bundle:nil];
        GeneralViewController *vc = [sb instantiateViewControllerWithIdentifier:@"phenotype"];
        [vc setProperty:property]; // I would like to pass this property to the custom table view controller.
        [self.navigationController pushViewController:vc animated:YES];

ฉันพยายามรับตัวควบคุมมุมมองตารางจากคลาสที่ฉันสร้างตัวอย่างสตรอยบอร์ดเพื่อตั้งค่าคุณสมบัติในเวลานี้

TableViewController *tablevc = [sb instantiateViewControllerWithIdentifier:@"table"];
    [tablevc setProperty:property];

...แต่กลับไม่ประสบผลสำเร็จเลย

มีใครทราบบ้างไหมว่าฉันสามารถเข้าถึงคุณสมบัติจากตัวควบคุมมุมมองตารางแบบกำหนดเองได้โดยตรงจากตัวควบคุมมุมมองซึ่งกำลังสร้างอินสแตนซ์ของกระดานเรื่องราวได้อย่างไร

ขอบคุณสำหรับความช่วยเหลือของคุณ,


person Trichophyton    schedule 14.03.2017    source แหล่งที่มา


คำตอบ (1)


เลือก segue ที่ฝังของคุณจากสี่เหลี่ยมผืนผ้าสีน้ำเงินไปจนถึง tableView ด้านบนและให้ตัวระบุ segue :) สมมติว่าตัวระบุ segue คือ "abcd"

ใน ViewController ของคุณที่มีการเขียนคอนเทนเนอร์

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "abcd" {
            let tableView : YourTableViewClass = segue.destination as! YourTableViewClass
            //pass whatever params want :)
        }
    }

แก้ไข

Segue ที่ฝังไว้จะทำงานเหมือนกับ Segue อื่นๆ โดยมีข้อยกเว้นประการหนึ่งที่ Segue อื่นๆ คุณจะต้องดำเนินการไม่ว่าจะโดยทางโปรแกรมหรือทริกเกอร์เหตุการณ์บางอย่างโดยที่ Segue ที่ฝังไว้จะถูกดำเนินการโดยอัตโนมัติเมื่อโหลดคอนเทนเนอร์ :)

ดังนั้นคุณจึงสามารถมี segue identifier ได้ เขียนโค้ดใน allowanceForSegue เช่นเดียวกับที่คุณทำกับ segue อื่นๆ :)

person Sandeep Bhandari    schedule 14.03.2017
comment
ขอบคุณมาก! คุณทำให้วันของฉัน :-) ฉันไม่เคยเป็นแฟนตัวยงของสตอรี่บอร์ดมาก่อน และฉันไม่เคยสนใจรายละเอียดที่ต่อเนื่องกันเหล่านี้เลย ขอบคุณ!! - person Trichophyton; 14.03.2017
comment
ดีใจที่คำตอบของฉันมีประโยชน์สำหรับคุณ :) มีความสุขกับการเขียนโค้ด - person Sandeep Bhandari; 14.03.2017