2011-08-15 13 views
0

メインxibファイルにはタブバーコントローラがあり、各タブは別のxibにリンクされています。xibのtableViewが関連付けられたビューコントローラのデータソースデリゲートメソッドを取得しない

タブの1つはnavコントローラで、そのビューコントローラはanswerのようにxibにリンクされています。

私は、アプリケーションを実行すると私は以下のエラーが表示されます。たとえそのようなメソッドのビューコントローラを調べていないかのように。

私はインターフェイスビルダーのリンク、つまりテーブルビューのデリゲートとデータソースをチェックして、別のxibを使用することを含め、すべてを試しました。私はvcに必要なプロトコルメソッドを実装しました。 numberofrowsinsection。

xibのデータソースリンクを削除すると、エラーが消えます。

編集:このビューコントローラのビューをメインウィンドウに追加すると(テストするだけで)、テーブルビューが問題なく読み込まれます。だから、それはnav controllerとtab controllerの一部として使うときにしか起こらないようです。

キャッチされない例外により 'NSInvalidArgumentException'、理由にアプリを終了: ' - [のUIViewController のtableView:numberOfRowsInSection:]:認識されないセレクター インスタンス0x6120ae0に送信初スローで *コールスタック:(0 CoreFoundation
0x00dc45a9 exceptionPreprocess + 185 1 libobjc.A。dylib
0x00f18313 objc_exception_throw + 44 2 CoreFoundationの
0x00dc60bb - [NSObjectの(NSObjectの)doesNotRecognizeSelector:] + 187 3
CoreFoundationの0x00d35966
+ 966 4 CoreFoundationの0x00d35522 _CF_forwarding_prep_0 + 50 5のUIKit
0x001d32b7を転送__ - [ UISectionRowData refreshWithSection:のtableView:tableViewRowData:] + 1834年6のUIKit
0x001d0d88 - [UITableViewRowData numberOfRows] + 108 7のUIKit
0x00084677 - [のUITableView noteNumberOfRowsChanged] + 132 8のUIKit
0x00091708 - [のUITableView reloadData] + 773 9のUIKit
0x0008e844 - [のUITableView layoutSubviews] + 42 10 QuartzCore
0x016aea5a - [CALayerのlayoutSublayers] + 181 11 QuartzCore
0x016b0ddc CALayerLayoutIfNeeded + 220 12 QuartzCore
0x016560b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310 13 QuartzCore 0x01657294 _ZN2CA11Transaction6commitEv + 292 14 QuartzCore
0x0165746d _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99 15 CoreFoundationの012 0x00da589bCFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 27 16 CoreFoundationの0x00d3a6e7 __CFRunLoopDoObservers + 295 17 CoreFoundationの0x00d031d7 __CFRunLoopRun + 1575年18 CoreFoundationの
0x00d02840 CFRunLoopRunSpecific + 208 19 CoreFoundationの
0x00d02761 CFRunLoopRunInMode + 97 20 GraphicsServices
0x00ffc1c4 GSEventRunModal + 217 21 GraphicsServices
0x00ffc289 GSEventRun + 115 22 UIKit
0x00024c93 UIApplicationMain + 1160 23 MyPractice
0x00002339メイン+ 121 24 MyPractice
+ 53を起動0x000022b5)このログメッセージ 'NSException'

答えて

2

を のインスタンスを投げた後に呼び出さ終了:

[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 

UITableView dataSource方法が送信されていることを意味UIViewControllerのインスタンスに、サブクラスのインスタンスではありません。どのようにVCを初期化していますか? XIB内から初期化する場合は、VCのクラスをサブクラスに正しく設定してください。

+0

私はサブクラスを持っていません。私はxibでviewcontrollerを作成し、xibにtableviewを配置し、データソースをファイル所有者にリンクしました。そして、私は上記のようにこのビューコントローラを使用しました – TheLearner

+0

あなたが 'vcで必要なプロトコルメソッドを実装した'と言えば、それらのメソッドはサブクラスを作成することによって実装されます。これらの方法を実装する代替手段はありません。あなたはどこに置いたのですか? –

+0

申し訳ありませんが、あなたは正しいです。私はこれらのメソッドが実装されているサブクラスを持っています。 xibはテーブルビューを持ち、そのサブクラスにリンクされています – TheLearner

関連する問題