2013-11-15 48 views
0

我是IOS開發新手,我試圖以編程方式加載新視圖。我有一個根視圖。當應用程序啓動時,根視圖會正確加載。從根視圖中,當我按下按鈕時,我想加載一個新視圖。無法使用導航加載新視圖控制器

新視圖自定義類是:PlaceDetailsController

我的代碼是:

PlaceDetailsController *x = [[PlaceDetailsController alloc] initWithNibName:@"PlaceDetailsController" bundle:nil]; 
[self.navigationController pushViewController:x animated:YES]; 

我收到以下錯誤:

2013-11-15 17:29:06.164 Info.mu.final[1806:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/noor/Library/Application Support/iPhone Simulator/6.1/Applications/7FD5D7FC-38DE-448F-84F1-17879202DBA7/Info.mu.final.app> (loaded)' with name 'PlaceDetailsController'' 
*** First throw call stack: 
(0x211b012 0x19cce7e 0x211adeb 0x1134ef9 0xff97e7 0xff9dc8 0xff9ff8 0xffa232 0xffa4da 0x10118e5 0x10119cb 0x1011c76 0x1011d71 0x101289b 0x1012e93 0x1012a88 0x2a05 0xaa3ca 0xa7c22 0x11e385a 0x11e299b 0x11e40df 0x11e6d2d 0x11e6cac 0x11dea28 0xf4b972 0xf4be53 0xf29d4a 0xf1b698 0x283bdf9 0x283bad0 0x2090bf5 0x2090962 0x20c1bb6 0x20c0f44 0x20c0e1b 0x283a7e3 0x283a668 0xf18ffc 0x226d 0x2195) 
libc++abi.dylib: terminate called throwing an exception 
(lldb) 

選定的視圖是查看我想要加載: enter image description here

任何建議?

+0

您是否有xib PlaceDetailsController? – Larme

+0

我正在使用Storyboard,我想加載的視圖的自定義類是PlaceDetailsController – Noor

+0

好的。 initWithNib因此無法正常工作。 – Larme

回答

2

我。有你使用故事板的感覺,對不對?

要推一個視圖,故事板能使用下面的代碼。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
ViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewIdentifier"]; 
[self presentViewController:viewController animated:YES completion:nil]; 

你需要確保你在故事板(這是在設定的StoryboardID身份檢查員(第三名)一旦你點擊你的視圖控制器,右鍵單擊))。

編輯:如果您從導航控制器推動視圖;

你需要設置一個Segue(比聽起來容易很多!)。在你的故事板中,Ctrl +點擊你的視圖控制器並拖動到你的其他視圖控制器,並選擇'推',你需要給這個推Segue和標識符,這可以在屬性檢查器中完成(確保你已經點擊Push segue對象!)。然後在您的代碼中,您希望推送發生時使用以下內容:

[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self]; 
+0

這個工作正常,但是我需要在導航欄上添加項目以手動返回到上一個視圖嗎? – Noor

+0

@ user1774937我已經更新了我的答案:)歡迎來到iOS開發! – NinjaLikesCheez

+0

感謝它的工作,但你能告訴我爲什麼用nibfilename它不工作,從我見過的樣本,它應該工作?是不是? – Noor

2

一定要檢查您是否將自定義視圖設置爲xib/storyboard文件中的PlaceDetailsController。 (進入xib/storyboard文件,點擊視圖,轉到右側面板上的身份檢查器,並確保在頂部的自定義類textfild中看到PlaceDetailsController)。

如果這是正確的,當您重命名XCode以外的某些文件時,通常會發生此錯誤。爲了解決這個問題,你可以直接從您的項目中刪除文件(右鍵點擊 - 刪除(請務必只刪除參考),並重新導入它們在您的項目

一切都應該後確定

相關問題