3

UITableViewナビゲーションベースのアプリで、次を使用して実装された別のビューをロードしようとするとinitWithNibName:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController *detailsViewController = [[UIViewController alloc] initWithNibName:@"bloop2ViewController" bundle:nil];
    [[self navigationController] pushViewController:detailsViewController animated:YES];
    [detailsViewController release];
}

UITableViewセルをクリックした後、次のようになります。

2009-06-13 11:44:41.089 Bloop[75227:20b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0xd446f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key tableView.' 2009-06-13 11:44:41.092 Bloop[75227:20b] Stack: (
807902715, 2429103675, 808061681, 810717848, 810716389, 816538544, 807805711, 816533170, 816541363, 815230552, 815224116, 815223834, 815217291, 815258907, 815254969, 815262662, 815243017, 815265053, 815242666, 11044, 815018240, 815005661, 810768858, 807687328, 807683624, 839142449, 839142646, 814752238, 9088, 8942 )

しかしUITableView、InterfaceBuilder で切断すると、ビューは問題なくロードされます (ただし、データをプッシュする方法はありません)。

UITableView の実装は適切です。新しい XCode プロジェクトで試してみましたが、問題なく動作しました。

4

5 に答える 5

6

エラー メッセージは、UIViewController 型のオブジェクトにプロパティ "tableView" を設定しようとしていますが、それが存在しないことを示しています。私は推測していますが、おそらくあなたのnibファイルにはtableViewプロパティを持つ派生ビューコントローラーがありますが、派生オブジェクトではなくUIViewControllerを構築します。試してみてください:

MyTableViewController *detailsViewController = [[MyTableViewController alloc] initWithNibName:@"bloop2ViewController" bundle:nil];
于 2009-06-13T11:37:04.920 に答える
0

これで2時間後、忘れていました

@synthesize tableView = _tableView;

それが役に立てば幸い

マリオ

于 2012-08-02T11:18:14.620 に答える
0

これがあなたを噛むことができるさらに別の方法。ビューのためにxibを捨てて、最初からやり直しました。私が何をしたとしても、ビューはロード時にこの例外をスローしました。数時間髪を抜いた後、ついにシミュレーターからアプリを削除して修正しました。どういうわけか、インストール時に古い xib が置き換えられませんでした。

于 2012-04-11T08:34:09.430 に答える
0

私はちょうどこの問題を経験しました。私の場合、原因は実装コードが MyTableViewController現在のビルド構成から除外されていたことです。それが誰かを助けることを願っています。

于 2011-11-28T04:46:31.340 に答える
0

私はこの問題を抱えていましたが、修正は両方を確認することでした

  1. メイン ウィンドウ xib のタブ バーの下にあるビュー コントローラーに NIB 名を設定し、
  2. クラス名はサブビューコントローラーで設定されました。

このページは私にとって役に立ちました。

于 2011-02-23T13:39:39.793 に答える