มีใครรู้บ้างว่าไอคอน Exit ใหม่ใช้สำหรับแก้ไขสตอรี่บอร์ดโดยใช้ Xcode 4.5 หรือไม่?


100

การคลิกขวาที่ไอคอนออกจะทำให้หน้าต่างว่างเปล่า ไม่สามารถ Ctrl ลากการเชื่อมต่อกับองค์ประกอบ IB หรือไฟล์ต้นฉบับที่เกี่ยวข้อง เอกสารไม่ให้ความรัก ไม่ปรากฏในไฟล์ nib มีเพียงสตอรี่บอร์ดเท่านั้น สมมติฐานของฉันคือมันเป็นข้อพิสูจน์ในการทำ segues แต่ฉันไม่เห็นวิธีการใหม่ ๆ ในการสำรองข้อมูล ทุกคน?



อาจซ้ำกับXcode 4.5 Storyboard 'Exit'
Tamás Sengel

คำตอบ:


104

มีข้อมูลมากมายในวิดีโอ WWDC "เซสชัน 407 - การนำสตอรี่บอร์ดมาใช้ในแอปของคุณ"

สมมติว่าคุณมีตัวควบคุมมุมมองสองตัวที่เชื่อมโยงด้วยการทำต่อกัน ใช้การดำเนินการออกต่อไปนี้บนตัวควบคุมมุมมองแรก:

- (IBAction)done:(UIStoryboardSegue *)segue {
    NSLog(@"Popping back to this view controller!");
    // reset UI elements etc here
}

จากนั้นในฉาก Storyboard สำหรับตัวควบคุมมุมมองที่สองให้ Ctrl ลากจากองค์ประกอบ UI เช่นปุ่มไปยังไอคอนออกที่ด้านล่างของตัวควบคุมมุมมองนี้ การdone:ดำเนินการที่คุณเพิ่มลงในโค้ดของคอนโทรลเลอร์ตัวแรกจะปรากฏเป็นตัวเลือก ตอนนี้การเปิดใช้งานปุ่มที่คุณลาก Ctrl ไปที่ไอคอนออกจะปรากฏกลับไปที่ตัวควบคุมมุมมองแรกและคงสถานะเดิมไว้ (เช่นองค์ประกอบ UI เช่นการป้อนข้อความที่คาดว่าจะยังคงอยู่)


3
จริงๆแล้วมันจะคลายกลับไปยังอินสแตนซ์เดียวกันของตัวควบคุมมุมมอง (และมุมมอง)
Jon Hess

ขอบคุณฉันกำลังอ่านสิ่งนี้เพื่อเรียนรู้ว่า "ทางออกสีเขียว" เกี่ยวกับอะไรเพียงเพื่อจะพบว่ามันช่วยแก้ปัญหาให้ฉันได้ ฉันมีตัวควบคุมมุมมอง 2 ตัวที่คั่นด้วยตัวควบคุม TabBar และตัวควบคุมการนำทางและ "ป๊อป" ไม่ทำงานเพื่อย้อนกลับ ใช้เวลา 2 นาทีและทุกอย่างก็เป็นไปตามที่คุณพูด! ขอบคุณ!
user589642

ฉันจะเรียกใช้วิธีการดำเนินการบนDoneปุ่มในคลาสของมุมมอง B ก่อนออกจากกลับไปดู A ได้อย่างไร
ผู้เชี่ยวชาญ

หากคุณดูวิดีโอ WWDC คุณสามารถข้ามไปที่ 37:15 เพื่อดูส่วนเกี่ยวกับ "ผ่อนคลาย
เซ็กส์

220

ฉันมีปัญหาในการทำตามคำตอบที่ยอมรับดังนั้นนี่คือรายละเอียดเพิ่มเติม

ให้ภาพด้านล่างบนตัวควบคุมมุมมอง C คุณสามารถ "ออก" กลับไปที่ตัวควบคุมมุมมองใดก็ได้ในเส้นทางต่อ

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

ViewController Aคุณสามารถเขียน:

- (IBAction)done:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController Bคุณสามารถเขียน:

- (IBAction)back:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController Cคุณควบคุมการลากจากปุ่ม"ย้อนกลับ"ไปยังตัวเลือกออกสีเขียวและเลือกย้อนกลับ: ViewController Cคุณควบคุมการลากจากปุ่ม"เสร็จสิ้น"ไปยังตัวเลือกออกสีเขียวและเลือกเสร็จสิ้น: ป้อนคำอธิบายภาพที่นี่

หมายเหตุ: แม้ว่าเมธอดจะอยู่ในตัวควบคุมมุมมองอื่นที่แสดงขึ้นสำหรับทางออกของViewController C ควบคุมการลากและเลือกวิธีการกำหนด ViewController ที่จะคลายออก


2
หมายเหตุเพิ่มเติม: บางครั้งปุ่มออกสีเขียวจะไม่ทำงานแม้จะทำทุกขั้นตอนเสร็จเรียบร้อยแล้ว ในกรณีนี้การเปิดสตอรีบอร์ดอีกครั้ง (หรือโปรเจ็กต์ xcode) ทำให้ทำงานได้ตามที่คาดไว้
zxcat

3
ปัญหาอีกประการหนึ่งที่ฉันมีคือฉันไม่ได้ใส่ลายเซ็นวิธีการคลายตัวของฉันในไฟล์. h หรือนามสกุลของคลาส หลังจากที่ฉันเพิ่มมันแล้วการทำต่อที่ผ่อนคลายจะปรากฏขึ้นในป๊อปอัป
Steve Moser

2
+ Infinity forEven though the methods are on other view controllers they show up for the ViewController C's exit.
Santa Claus

15

นอกจากนี้ คำตอบของEricที่นี่คือวิธีการทำงานด้วย:

ฟังก์ชันที่คุณเพิ่มให้กับตัวควบคุมปลายทางมีลักษณะดังนี้:

@IBAction func backFromOtherController(segue: UIStoryboardSegue) {
    NSLog("I'm back from other controller!")
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.