當使用 initWithNibName 函數, 並使用 由nib文件生成的ViewController 的view屬性時候,遇到這個問題。
//load loc.xib
UIViewController * UIVC = [[UIViewController alloc] initWithNibName:@"loc" bundle:nil];
[self.view addSubview:UIVC.view];
[UIVC release];
NibName[2203:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "loc" nib but the view outlet was not set.'
表面意思是指 我們加載的nib文件,"view" 屬性值沒有進行設置.
這里的實際情況: 不是所生成的 VC 的view屬性值為 nil, 而是所生成的 VC 沒有 view 這個屬性。 我們使用的是UIViewController 定義的VC, 為什么 VC (View Controller) 會沒有 view 屬性呢?
(多么具有邏輯性的表述都不如一次成功的完整操作,begin :)
解決方案:
1. 點擊我們要加載的 xib 文件
2. 在右邊選中 File's Owner
3. 在 File's Owner 的 選項卡的“Custom Class” 屬性設置中,將 Class 的值改成對應的 VC, 這里改成 UIViewController,
4. 這時候,在File's Owner 的 選項卡中, 就 會出現“待連接設置” 的 view 屬性, 也即我們的編譯器 告訴我們的 the view outlet was not set 中的 view。當 File's Owner 的 class 為 NSObject 時候,是沒有 view 屬性的。
連接 view 屬性,
5. win+r, OK.