私はこの質問が以前に尋ねられていることを知っています。このサイトではなく、さまざまなスレッドの提案に従うのに多くの時間を費やしました。iPadアプリがシミュレータのないデバイスでのみ読み込まれます
私は、複数のビューからなるiPad向けのアプリを開発しています。これらのビューのそれぞれには、UITableViewが含まれています。一部のTableViewセルには、UITableViewCellで実装されたカスタムセルが含まれています。問題は今iPadのシミュレータで問題なく実際のデバイスでアプリを実行できることです。
2011-08-03 20:37:13.849 myApp[658:707] Creating cell: LabledTextFieldCell.xib
2011-08-03 20:37:13.866 myApp[658:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/B9A24738-FA19-4A54-8CE5-813B48E6871E/iCockpit-Client.app> (loaded)' with name 'LabledTextFieldCell.xib''
私がチェックし、再確認してきましたし、すべてが完璧な順序であるように思われる: - デバイスで、すぐに私はカスタム質問でのUITableViewCellをしたことを含むビューにアクセスしようとして、それは次のようなメッセージでクラッシュ。このファイルは、ファイルシステム内に物理的に存在するだけでなく、Xcodeにも存在し、正しい名前でコード内で参照されます。
はここでクラッシュが発生したコードの行です:
より大きな文脈では[[NSBundle mainBundle] loadNibNamed:MyIdentifier owner:self options:nil];
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
int curRow = indexPath.row;
int i = 0;
if (indexPath.section > 0) {
while (i < indexPath.section) {
curRow = curRow + [self sectionSize:i];
i++;
}
}
UITableViewCell *cellRet;
if (indexPath.section == 1) {
// code
} else if (indexPath.section == 2) {
// ...
} else if (indexPath.section == 3) {
static NSString *MyIdentifier = @"LabledSwitchCell";
NSLog(@"Creating cell: %@", MyIdentifier);
cellRet = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cellRet == nil) {
// CRASHES
// -------
[[NSBundle mainBundle] loadNibNamed:MyIdentifier owner:self options:nil];
// -------
cellRet = self.cell;
self.cell = nil;
}
// more code...
}
注目に値するかもしれませんどのような:ペン先には、最初にファイルを経由して追加されました - > New - > New File ...、Cocoa Touch - > MyClassViewController.m、MyClassViewController.h、MyClassViewController.xibの3つのファイルを提供するUIViewControllerサブクラスです。 MyClassViewController.xib(私の実際のケースではLabledTextfieldViewController.xib)の名前をMyClassView.xib(LabledTextfieldView.xib)に変更しました。これはもっと論理的です。
前述のとおり、このアプリはシミュレータで正常に動作しますが、問題は実際のデバイスでのみ発生します。
私のXcodeバージョンは、最新のXcode 4.1(ビルド4B110)です。
ありがとうございます。どんな助けでも大歓迎です!
ああ、そうだよ!私は多くの希望を持っていませんでしたが、あなたの答えのために、私は再び違いを調べました。実際には、nibファイルの名前はLabledTextfieldCellであり、LabledTextFieldCellとして参照しました。このファイルの最初の実装は私の同僚からのものであり、私は彼の異なる命名規則に気付かなかった。どうもありがとうございました。おそらく私はさらに多くの時間をデバッグできました。 :-) – TigreFurry
非常にいいキャッチ。 –