我想在運行時基於某些條件從子文件夾加載NiB文件。問題是,當我調用方法pathForResource時,代碼能夠找到NIB文件,但是當我運行應用程序時,我總是得到以下錯誤如何從不同文件夾加載nib文件?
由於未捕獲的異常'NSInternalInconsistencyException',原因:'Could not在包中加載NIB:「一個NSBundle
這裏是我的代碼:
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if(somecondition == true)
{
NSString* nibPath = [[NSBundle mainBundle] pathForResource:nibNameOrNil ofType:@"xib" inDirectory:@"CAS"];
NSString* customPath = [nibPath stringByDeletingLastPathComponent];
NSBundle* localeBundle = [NSBundle bundleWithPath:customPath];
if (localeBundle!= nil) {
nibBundleOrNil = localeBundle;
}
}
}
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
}
return self;
}
這是[NSBundle MainBundle];我想你對Xcode中所謂的「文件夾」的結構感到困惑。當Xcode創建一個文件夾時,它只是編輯項目的XML,將這些文件包含在僞文件夾包中。它永遠不會寫入文件系統。 – CodaFi
那麼如果沒有'文件夾',那麼'inDirectory'字段使用了什麼? – ArdenDev
它應該暗示你引用了你的包中的文件,比如NSHomeDirectory或者NSDocumentsDirectory。 – CodaFi