我找到了這個問題的幾篇文章,但沒有一篇解決了我的問題。在另一個視圖控制器中添加視圖控制器作爲子視圖
說我好象..
- ViewControllerA
- ViewControllerB
我試圖ViewControllerB添加爲ViewControllerA一個子視圖,但是,它拋出一個錯誤,如 「fatal error: unexpectedly found nil while unwrapping an Optional value
」。
下面是代碼...
ViewControllerA
var testVC: ViewControllerB = ViewControllerB();
override func viewDidLoad()
{
super.viewDidLoad()
self.testVC.view.frame = CGRectMake(0, 0, 350, 450);
self.view.addSubview(testVC.view);
// Do any additional setup after loading the view.
}
ViewControllerB僅僅是一個簡單的屏幕,在它的標籤。
ViewControllerB
@IBOutlet weak var test: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
test.text = "Success" // Throws ERROR here "fatal error: unexpectedly found nil while unwrapping an Optional value"
}
EDIT
隨着來自用戶的答案的建議的解決方案,在ViewControllerB ViewControllerA會在屏幕上。灰色邊框是我爲子視圖創建的框架。
感謝您的詳細解釋。當我嘗試將'ViewControllerB'添加到'ViewControllerA'時,'ViewControllerB'正在關閉屏幕。我用模擬器的屏幕截圖編輯了我的帖子。 – 2014-12-04 17:01:15
這是可能的。這就是爲什麼,在我的例子中,我手動設置了「框架」。或者,如果你關閉了'translatesFrameIntoConstraints'(或者其他所謂的),你也可以通過編程來添加約束條件。但是,如果您添加子視圖,則需要負責設置其框架,就像您使用所有以編程方式添加的子視圖一樣。 – Rob 2014-12-04 18:31:58
這是如何添加邊界controller.view.frame = UIScreen.mainScreen()。bounds' – 2016-03-03 09:14:53