2013-10-22 146 views
2

我有一個名爲ViewControllerHome的UIViewController,當用戶觸摸屏幕上的圖像時,我想顯示第二個視圖,這是一張會員卡。我做從圖像的觸摸如下:從另一個UIViewController呈現UIViewController

membershipCardViewController = [[MembershipCardViewController alloc] initWithNibName:@"MembershipCard" bundle:nil]; 
[self presentViewController:membershipCardViewController animated:YES completion:nil]; 

當代碼執行的異常被拋出的presentViewController線。

我有一個包含視圖和會員卡的一個UIImageView一個視圖控制器的的.xib。我將ViewController的類設置爲我的MembershipViewController。

一旦顯示了,我將關閉它的觸摸。

誰能告訴我,我缺少的是什麼?我認爲我已經有了所有的步驟來呈現視圖控制器。

感謝您的幫助。

+0

您錯過了有關您的問題異常的任何細節... – Wain

+0

***終止應用程序由於未捕獲的異常'NSInternalInconsistencyException',原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加載了「MembershipCard」筆尖,但視線出口沒有設置。「 ***第一次擲出調用堆棧: – LilMoke

+0

您是否在'XIB'中連接了控制器的'view'出口? – Wain

回答

3

在MembershipCardViewController的nib文件中,其視圖(它正在控制的視圖)連接到視圖控制器視圖插座。

enter image description here

要做到從文件的所有者此控件拖動到視圖你想將它連接到(在這種情況下,灰色的視圖)

enter image description here

,你應該得到這樣的:

enter image description here

文件所有者應指向您的MembershipCardVie wController。每個視圖控制器都有一個指向視圖的指針。我會猜測你刪除了股票後添加了一些自定義視圖。控制從文件所有者到該視圖的拖動,以創建出口。 (如果這個插座返回零,則會拋出異常)。

爲了安全起見,請確保文件的所有者(在筆尖)指向MembershipCardViewController (這可能不是問題,但它聽起來像你可能已經開始與一個空的筆尖)。

enter image description here

要做到這一點,點擊文件所有者,並選擇右邊的身份檢查。確保該類說MembershipCardViewController

我之前關於這個Am I right in saying initWithNibName:bundle is used to manually load nib files and that initWithCoder would be used as an alternative?

這就解釋了什麼是真正回事回答另一個問題。

+0

是的,我用空筆尖做了star5t,但是我的MembershipCardViewController不在自定義類下拉菜單中。我不應該這樣做嗎? – LilMoke

+0

是的,我明白,但是當我單擊文件的所有者時,我沒有插座部分,只需引用插座和引用插座連接。 – LilMoke

+0

控制從文件所有者拖動到要連接到的視圖。視圖出口應該顯示 –

1

您的廈門國際銀行的目的是歸檔控制器的看法。設置控制器類只是所需信息的一部分,您還需要連接控制器和視圖之間的任何IBOutlet關係。

作爲標準,UIViewController的任何小類都提供了名爲view的插座。您需要確保它已連接。否則,當你加載XIB view沒有得到設置,你會得到一個異常。

有很多方法可以進行連接。檢查this。參見loaded-nib-but-the-view-outlet-was-not-set-new-to-interfacebuilder

相關問題