2016-06-30 50 views
0

我有一個UIViewController彈出自定義UIView需要能夠提出另一個UIViewControllerBarcodeScanViewController)。的UIView呈現的UIViewController與委託

當用戶完成BarcodeScanViewController時,數據被傳回UIView以更新標籤。

如何使用導航欄將BarcodeScanViewControllerUIView中提出,以便在必要時關閉它?

下面的代碼有點作品。它提供了BarcodeScanViewController,但它實際上並沒有做任何事情。它只是一個黑色的視圖。

內自定義的UIView

我也收到來自不兼容的類型的警告

分配到

'身份證< BarcodeScanViewControllerDelegate> 'CustomView * const__strong'

當我嘗試分配委託。

我從來沒有從UIView之前調用過UIViewController。我知道只有一個VC可以調用另一個VC。所以我試圖創建VC來使用演示者。

我在做什麼錯?

+0

請解釋你在'currentTopViewController'中做了什麼。你如何獲得展示新產品的視圖控制器?像[[[[UIApplication sharedApplication] keyWindow] rootViewController]'?視圖通常不是微不足道的,因爲它試圖找出當前哪個視圖控制器是最重要的,實際上它通常不需要知道。我建議你用一個像樣的默認值(如我在這裏寫的)創建一個屬性,並在需要時從視圖外部設置控制器。 – Gero

+0

我正在嘗試使用currentTopViewController來獲取實例化自定義視圖的VC。 –

+0

是的,我明白了,問題在於你如何努力做到這一點。警告來自你的班級不採用BarcodeScanViewControllerDelegate協議。此外,獲得一個黑色的屏幕表明你並沒有完全關閉,也許所說的控制器沒有正確配置其視圖? (注意:將其主視圖的背景顏色設置爲透明可以做到這一點,但實際上你不會在它下面看到「前一個」控制器的視圖)。你上面的代碼不能告訴我什麼是錯的。不過,使用另一個風險投資公司來呈現新風險投資者是正確的想法。 – Gero

回答

0

好的,有一堆小東西。我分叉您的回購並修復它,以便您可以看到它是如何工作的。請參閱here

簡而言之:您確實介紹了掃描儀VC,但正如我所說的,您不能簡單地將它放在「呈現」視圖控制器(您的ViewController類)上方。只要任何演示文稿轉換(即動畫)完成,該視圖控制器的視圖就會從視圖層次結構中刪除。所以你看到的黑屏只是窗口背景(黑色)。掃描儀的視圖是透明的。此外,掃描儀希望您提供一個視圖,通過IBOutlet將相機渲染(和按鈕)。由於您沒有從故事板實例化控制器,因此您沒有設置任何設置,即用於該視圖的視圖爲零,因此掃描儀要呈現視頻的幀大小爲(0,0)。 我現在修復了這個問題,希望你現在可以看到如何呈現視圖控制器應該工作。要實現一個實際的彈出窗口(帶有「以前的視圖控制器的基礎視圖」)在iOS上有點困難,但可能有幾種方式。如果你願意,我可以稍後詳細闡述。

+0

哇,非常感謝你花了一些時間來幫助我學習和理解!我現在正在查看您的修訂和評論! –