2011-08-03 9 views
2

私はこの質問が以前に尋ねられていることを知っています。このサイトではなく、さまざまなスレッドの提案に従うのに多くの時間を費やしました。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)です。

ありがとうございます。どんな助けでも大歓迎です!

答えて

6

NIBファイル名のスペルを確認してください。特に、大文字と小文字を区別してください。

シミュレータファイルシステムでは大文字と小文字は区別されませんが、実際のデバイスはそうです。

+0

ああ、そうだよ!私は多くの希望を持っていませんでしたが、あなたの答えのために、私は再び違いを調べました。実際には、nibファイルの名前はLabledTextfieldCellであり、LabledTextFieldCellとして参照しました。このファイルの最初の実装は私の同僚からのものであり、私は彼の異なる命名規則に気付かなかった。どうもありがとうございました。おそらく私はさらに多くの時間をデバッグできました。 :-) – TigreFurry

+0

非常にいいキャッチ。 –

関連する問題