2015-09-05 156 views
0

場景:我正在爲iOS開發混合Cordova(Phonegap)應用程序。爲了混合原生代碼和Cordova代碼,我在Xcode 7中創建了一個故事板,其中UIView嵌入在容器視圖中(使用嵌入segue),以便能夠在整個本機應用程序中重新使用Web視圖。iOS:如何以編程方式將視圖添加到故事板視圖

對於科爾多瓦視圖的嵌入,我發現這些指令: http://cordova.apache.org/docs/en/edge/guide_platforms_ios_webview.md.html#iOS%20WebViews

這基本上是說,你必須把這個:

CDVViewController* viewController = [CDVViewController new]; 
viewController.view.frame = CGRectMake(0, 0, 320, 480); 
[myView addSubview:viewController.view]; 

,但他們沒有解釋如何添加查看故事板視圖。我特別要問自己如何處理CGRectMake,因爲我希望視圖能夠響應呈現,即將自己調整爲父視圖的約束(而不是具有固定的矩形)。

我已經通過派生自Cordova的標準應用程序委託實現了這一點,但是這一定是錯誤的做法。當我給科爾多瓦的相機打電話時,拍照並回到我的網絡視圖,網頁視圖突然跳出它的邊界(到窗口的頂部),並在Xcode控制檯中看到此錯誤消息:

Presenting view controllers on detached view controllers is discouraged 

PS:我實際上使用Swift,但我能夠讀取Objective-C代碼,所以這些語言中的代碼示例對我來說都很好。

回答

1

只需創建存在於你的故事板視圖的出口,它連接並添加子視圖

@IBOutlet weak var containerView: UIView! 

func addMySubview() { 
var viewController = CDVViewController() 
viewController.view.frame = containerView.frame 
containerView.addSubview(viewController.view) 
} 

編輯: 在這裏,我沒有在操場的例子,所以你可以看到你的視圖的框架隨着父母的變化。 Example

+0

感謝您快速回答。是的,到目前爲止,這部分是清楚的。但是,我如何附加正確的框架?我不想有一個固定的CGRect大小。 – waldgeist

+0

很抱歉使用swift,但我想你明白。 –

+0

感謝您的更新! – waldgeist

相關問題