12

再利用のために登録されたペン先を使用しようとすると、断続的なエラーが発生しました。2 つの ViewController で同じカスタム セルを使用しています。

2013-09-05 11:04:08.476 xxx[51395:c07] *** キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了します。 UITableViewCell インスタンスでなければなりません'

  1. オブジェクトリストの1つのビューでNIBファイルを使用しています-上に、確かに-。UITableViewCell - を拡張した TweetViewCell 型を持っています。
  2. [b]identifier[/b] を " TweetTableViewCellId "として既に定義しています
  3. 私はペン先をロードし、それをviewDidLoadに登録しました(私はすでにデバッグしており、ペン先オブジェクトがロードされています)
  4. 同じIDを使用して登録セルを回復しようとしています。

いくつかのコード

// First Controller to use custom Cell
@implementation TweetsViewController

- (void) viewDidLoad
{
...
  UINib *nib =  [UINib nibWithNibName:kTweetTableViewCellNibName bundle:nil];
  [self.tweetsTableView registerNib:nib forCellReuseIdentifier:@"TweetTableViewCellId"];

..
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  TweetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kTweetTableViewCellId forIndexPath:indexPath];
...
}

@end

// second Controller to use custom Cell

@implementation OfflineEpisodeModalViewController

- (void) viewDidLoad
{
  UINib *nib =  [UINib nibWithNibName:kTweetTableViewCellNibName bundle:nil];
  [self.tweetSearchTableView registerNib:nib forCellReuseIdentifier:kTweetTableViewCellId];
}

...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  TweetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TweetTableViewCellId" forIndexPath:indexPath];
}

@end

なにか提案を?

4

4 に答える 4

8

左側の XIB ファイル要素リストの「コンテンツ ビュー」の下にないラベルがありました。

そのラベルを削除したところ、機能しました。

于 2015-10-31T03:06:59.050 に答える
5

解決済み

単純ですが、とにかく、新しい知識として有効です。同じ名前の xib ファイルを宣言した場合 (私の間違い)、ロードされるファイルは保証されません。

「忘れられた」xibファイルを削除して動作します!

于 2013-09-05T19:45:01.487 に答える