ถ้าสั่ง present เปิดหน้า viewController ใหม่ โดยเรายัดคำสั่งไว้ใน viewDidLoad() จะไม่แสดงผลนะครับ สาเหตุเกิดจากข้อมูลที่จุดนี้ยังไม่มีข้อมูลของ screen ดังนั้นถ้า viewController มีการแสดงแล้วถึงจะใช้คำสั่ง present ได้ ดังนั้นกรณีจะใช้ไม่ได้ครับ ให้ใช้แบบนี้แทนครับ
1 2 3 4 |
override func viewDidLayoutSubviews() { let vc = ViewController() self.present(vc, animated: true, completion: nil) } |
เพิ่มเติมเกี่ยวกับ present viewcontroller หากใช้กับ navigation controller จะไม่มีแถบบาร์ด้านบน หากต้องการให้มี ต้องใช้ push viewcontroller ในการเปิดหน้าใหม่ สาเหตุเพราะว่า present viewcontroller นั้นจะเป็นการเปิดหน้าแอปใหม่แบบ modally นั่นคือจะอยู่ภายนอกของ navigation มันจะไม่อยู่ใน navigation controller ดังนั้นถ้าต้องการให้มีแถบบาร์ด้านบน มี 2 วิธีดังนี้
วิธีที่ 1 ใช้ push
1 2 |
let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController self.navigationController!.pushViewController(VC1, animated: true) |
วิธีที่ 2 ฝัง view controller ใหม่ไว้ใน navigation controller และใช้ present
1 2 3 |
let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController let navController = UINavigationController(rootViewController: VC1) // Creating a navigation controller with VC1 at the root of the navigation stack. self.presentViewController(navController, animated:true, completion: nil) |
0