在ios應用程序中我有一個UITableView。在cellForRowAtIndexPath
方法中,我需要使用它的NIB名稱返回一個自定義單元格。爲此我使用loadNibNamed
。 (我將負荷後填入單元中的數據在「willDisplayCellforRowAtIndexPath」)UITableView從NIB文件加載自定義單元格拋出NSInternalInconsistencyException
MyItemCell是XIB文件(MyItemCell.xib),該方含2的UIImageView和一個UIButton(每一個項目都有一個標籤)
這是我的代碼:
在我的viewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [ViewHelper loadCustomCellWithNibName:@"MyItemCell" owner:self];
}
,並從NIB
+ (UITableViewCell *) loadCustomCellFromNib:(NSString *)nibName owner:(id)owner
{
UITableViewCell *cell = nil;
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:nibName owner:owner options:nil];
if([nibObjects count] > 0)
{
cell = [nibObjects objectAtIndex:0];
}
else
{
NSLog(@"Failed to load %@ XIB file!", nibName);
}
return cell;
}
加載自定義單元格的方法
在所有的測試中一切正常。但是,我收到了一些我無法複製的用戶的崩潰。
這是崩潰:
NSInternalInconsistencyException
Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/7A24cE79-131F-523F-4C00-23B523ARG123/MyApp.app> (loaded)' with name 'MyItemCell'
堆棧跟蹤:
0 CoreFoundation 0x39b432a3 __exceptionPreprocess + 163 + 162
1 libobjc.A.dylib 0x33a3297f objc_exception_throw + 31 + 30
2 CoreFoundation 0x39b431c5 -[NSException initWithCoder:] + 1
3 UIKit 0x32e12491 -[UINib instantiateWithOwner:options:] + 1637 + 1636
4 UIKit 0x32e1a1d7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 139 + 138
5 MyApp 0x00047ded +[ViewHelper loadCustomCellFromNib:owner:] (ViewHelper.m:349)
6 MyApp 0x00034003 -[BuildViewController tableView:cellForRowAtIndexPath:] (BuildViewController.m:2432)
7 UIKit 0x32cc0545 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 413 + 412
8 UIKit 0x32ca530b -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1311 + 1310
9 UIKit 0x32cbc7c7 -[UITableView layoutSubviews] + 207 + 206
10 UIKit 0x32c78803 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 259 + 258
的問題是,我沒能重現此崩潰。
任何想法可能導致崩潰?或者有什麼解決方案來避免這樣的錯誤?
非常感謝您的幫助
編輯:
只是爲了澄清更多的,這是工作完全正常的,我做任何測試。這個崩潰對於1位用戶來說只出現1次,所以問題不在代碼中。我只是在一個非常具體的情況下尋找可能導致這次崩潰的原因。由於
要記住的重要一點是nibname和單元格標識符是不同的。名稱在身份檢查器中,標識符在屬性檢查器中 – noobsmcgoobs