คำถามติดแท็ก uiviewcontroller

คลาส UIViewController จะจัดการมุมมองในแอพ iOS และเป็นสื่อกลางในการโต้ตอบระหว่างมุมมองของแอพอ็อบเจ็กต์โมเดลพื้นฐานและเวิร์กโฟลว์โดยรวม

12
กำหนดค่าเริ่มต้นสำหรับ UIViewController ใน Swift พร้อมการตั้งค่าอินเทอร์เฟซในสตอรี่บอร์ด
ฉันมีปัญหาในการเขียน init ที่กำหนดเองสำหรับคลาสย่อยของ UIViewController โดยพื้นฐานแล้วฉันต้องการส่งการอ้างอิงผ่านเมธอด init สำหรับ viewController แทนที่จะตั้งค่าคุณสมบัติโดยตรงเช่น viewControllerB.property = value ดังนั้นฉันจึงสร้าง init ที่กำหนดเองสำหรับ viewController ของฉันและเรียกใช้ super ที่กำหนด init(meme: Meme?) { self.meme = meme super.init(nibName: nil, bundle: nil) } อินเทอร์เฟซตัวควบคุมมุมมองอยู่ในสตอรีบอร์ดฉันยังทำให้อินเทอร์เฟซสำหรับคลาสที่กำหนดเองเป็นตัวควบคุมมุมมองของฉัน และ Swift จำเป็นต้องเรียกวิธีการเริ่มต้นนี้แม้ว่าคุณจะไม่ได้ทำอะไรภายในวิธีนี้ก็ตาม ไม่งั้นคอมเพลนจะบ่น ... required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } ปัญหาคือเมื่อฉันพยายามเรียกใช้ init ที่กำหนดเองของฉันโดยMyViewController(meme: meme)ไม่ได้ init คุณสมบัติใน …

4
Swift: ตัวเริ่มต้น ViewController ที่กำหนดเอง
คุณจะเพิ่มตัวเริ่มต้นที่กำหนดเองให้กับUIViewControllerคลาสย่อยใน Swift ได้อย่างไร? ฉันได้สร้างคลาสย่อยUIViewControllerที่มีลักษณะดังนี้: class MyViewController : UIViewController { init(leftVC:UIViewController, rightVC:UIViewController, gap:Int) { self.leftVC = leftVC; self.rightVC = rightVC; self.gap = gap; super.init(); setupScrollView(); setupViewControllers(); } } เมื่อฉันเรียกใช้ฉันได้รับข้อผิดพลาดร้ายแรง: ข้อผิดพลาดร้ายแรง: การใช้ initializer ที่ไม่ได้ใช้งาน 'init (nibName: bundle :)' สำหรับคลาส 'MyApp.MyViewController' ฉันเคยอ่านมาแล้วว่าเมื่อเพิ่มตัวเริ่มต้นที่กำหนดเองจะต้องแทนที่ด้วยinit(coder aDecoder:NSCoder)ดังนั้นเรามาแทนที่สิ่งนั้นinitและดูว่าเกิดอะไรขึ้น: override init(coder aDecoder: NSCoder) { super.init(coder: aDecoder); } ถ้าฉันจะเพิ่มนี้ Xcode …

4
UnfollowModalViewController และส่งข้อมูลกลับ
ฉันมีสองตัวควบคุมมุมมองfirstViewControllerและsecondViewController ฉันใช้รหัสนี้เพื่อเปลี่ยนเป็น secondViewController ของฉัน (ฉันกำลังส่งสตริงไปด้วย): secondViewController *second = [[secondViewController alloc] initWithNibName:nil bundle:nil]; second.myString = @"This text is passed from firstViewController!"; second.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentModalViewController:second animated:YES]; [second release]; จากนั้นฉันใช้รหัสนี้ใน secondViewController เพื่อเปลี่ยนกลับไปที่ firstViewController: [self dismissModalViewControllerAnimated:YES]; ทั้งหมดนี้ใช้งานได้ดี คำถามของฉันคือฉันจะส่งข้อมูลไปยัง firstViewController ได้อย่างไร ฉันต้องการส่งสตริงอื่นไปยัง firstViewController จาก secondViewController

5
ใหม่การนำเสนอ Modal iOS 13: การนำเสนอตัวควบคุมไม่ย้ายลง
ฉันมีพฤติกรรมแปลก ๆ เมื่อนำเสนอ UIViewControllers อย่างสุภาพใน iOS 13 รูปแบบการนำเสนอใหม่ที่ฉันเห็นใน iOS 13 มีลักษณะดังนี้: ตัวควบคุมมุมมองการนำเสนอปรากฏขึ้นด้านหลังตัวควบคุมมุมมองการนำเสนอ นอกจากนี้ยังเลื่อนลงเพื่อเลียนแบบ "สแต็ค" ในขณะเดียวกันเมื่อนำเสนอตัวควบคุมมุมมองผ่านแอพของฉันฉันจะได้รับเอฟเฟกต์นี้: ตัวควบคุมมุมมองการนำเสนอไม่ได้เคลื่อนที่เลยเมื่อแสดงตัวควบคุมมุมมองใหม่ ฉันใช้รหัสนี้เพื่อนำเสนอตัวควบคุมมุมมองนี้: let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController controller.modalPresentationStyle = .pageSheet controller.modalTransitionStyle = .coverVertical present(controller, animated: true, completion: nil) นี่คือคำถามของฉัน: ฉันสงสัยว่าทำไมสิ่งนี้ถึงเกิดขึ้นและหากมีวิธีที่จะนำเสนอตัวควบคุมมุมมองในรูปแบบ iOS 13 ปกติ (ด้วยตัวควบคุมมุมมองการนำเสนอที่ย้ายกลับมา) ขอบคุณล่วงหน้า!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.