Tôi đang cố gắng chuyển đổi giữa hai trẻ em View Controllers
trên một số Container View
cụ thể. Tôi có một Navigation Controller
với một menu (Table View
để thực hiện các tùy chọn khác nhau của trình đơn).Làm cách nào để chuyển đổi giữa hai bộ điều khiển Chế độ xem con trên Swift?
Mỗi lần tôi bấm vào một tùy chọn của menu tôi muốn thay đổi con của Container View
nhưng tôi nhận con trên Navigation bar
và Table View
(chúng không được hiển thị nhưng chúng nằm trong bộ điều khiển Xem con mới).
Đề án của Main.storyboard của tôi là như thế này:
Navigation Controller --> View Controller (With 2 Container View, 1 for Table View
and the other to set master View Controller)
|
|
------------------------
| |
View Controller Table View
(id: master)
View Controller (id: Home) View Controller (id: screen2)
Tôi có đoạn mã sau vào tableView
chức năng (trong đó tôi phát hiện khi một tùy chọn của menu được nhấp) để thay đổi con View Controller Chế độ xem vùng chứa:
let currentController = self.navigationController?.visibleViewController //container
var oldChild = (currentController?.childViewControllers.last!)! as UIViewController //master
let newChild = (storyboard?.instantiateViewControllerWithIdentifier("Home"))! as UIViewController //Home
if (oldChild != newChild){
if currentController.childViewControllers.last != nil{
oldChild.willMoveToParentViewController(nil)
currentController.navigationController?.navigationBar.willRemoveSubview(oldChild.view)
//oldChild.view.removeFromSuperview()
oldChild.removeFromParentViewController()
}
currentController.addChildViewController(newChild)
currentController.view.addSubview(newChild.view)
newChild.didMoveToParentViewController(currentController)
}
Mã này hoạt động gần như tốt. Vấn đề là Bộ điều khiển Xem con mới được hiển thị phía trên thanh Điều hướng và Chế độ xem Bảng (trình đơn). Vì vậy, nó chiếm toàn bộ màn hình thay vì phù hợp trên Chế độ xem vùng chứa.
Tôi có nên thêm nội dung nào đó vào mã của mình hay tôi đang sử dụng mã của mình theo cách sai? Tôi đã tìm kiếm rất nhiều về nó nhưng hầu hết các giải pháp là trong mục tiêu-c hoặc không làm việc cho tôi.
EDIT: Sau khi tìm kiếm rất nhiều giờ tôi nghi ngờ rằng nó là một cái gì đó liên quan với segue embeded kết nối gốc View Controller
với master
View Controller nhưng tôi không thể nhúng đứa trẻ mới đến Container View
. Mã mà tôi đang cố gắng là:
currentController.performSegueWithIdentifier("EmbedSegue", sender: newChild)
hoặc
currentController.presentViewController(newChild, animated: true, completion: nil)
nhưng không ai trong số họ nhúng segue. Chỉ cần hiển thị newChild
trên toàn màn hình.
Cảm ơn trước!
Bạn đã thêm chế độ xem VCC vào chế độ xem VC hiện tại chưa? – Horst
Tôi hy vọng bạn đọc điều này: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html - nó có mọi thứ bạn cần với các ví dụ mã rõ ràng. – Losiowaty
@Losiowaty Tôi đã xem trang này trước đây nhưng tôi đã đóng nó bởi vì nó không nhìn Swift mà tôi đang sử dụng. Tôi hoàn toàn mới nên có lẽ tôi đã sai và tôi có thể sử dụng cả hai cùng một lúc. Hãy sửa tôi nếu tôi sai. –