2012-05-07 13 views
0

私は別の(Table)ViewControllerからTableViewをScrollviewに実装しようとしています。私は文字通り何時間も試していますが、問題を理解することはできません。私が手にエラーがある:異なるControllerClassからSubviewとしてUITableViewを実装する

- [UISectionRowData numberOfSectionsInTableView:]:47:18.966 Test2を[12212:F803]アプリを終了*起因する 未認識セレクタインスタンス0x687fdb0 2012-05-07 16に送らキャッチされない 例外 'NSInvalidArgumentException'、理由: ' - [UISectionRowData numberOfSectionsInTableView:]:認識されないセレクターインスタンス 0x687fdb0に送ら'(

これは私は(のviewDidLoad実装で働いているコードセグメントです)法):

DateSubviewController *dateSubviewController = [[DateSubviewController alloc] init]; 
//This is the tableViewController which handles the code from the tableView I want to implement. 

NSArray *views = [NSArray arrayWithObjects: [dateSubviewController view], nil]; 

self.scrollView.delegate = self; 
self.pageControlBeingUsed = YES; 

for (int i = 0; i < views.count; i++) { 
    CGRect frame; 
    frame.origin.x = self.scrollView.frame.size.width * i; 
    frame.origin.y = 0; 
    frame.size = self.scrollView.frame.size; 

    UITableView *subview = [views objectAtIndex:i]; 
    [self.scrollView addSubview:subview]; 

    subview = nil; 
} 

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * views.count, self.scrollView.frame.size.height); 

scrollviewがそれ自身に取り組んでいる()は、異なる色のフレームでそれをテストしました。

[dateSubviewControllerビュー]は、tableViewが動作するために必要なメソッドを呼び出さないという問題があるようです。 ビューアウトレットは、ストーリーボードでtableViewに接続されていますが、グレー表示されています。私は間違ったビューを指しているかもしれないと思ったので、私はすでにtableViewを削除して、再度それをフックしようとしました。これは効果がありませんでした。 viewDidLoad()メソッド全体が終了した直後にクラッシュが表示されます。

私が直接ビュー配列は、デバッグ中に0の要素が含まれているのtableViewにアクセスするために(dateTableは私が実装しようとのtableViewである)

NSArray *views = [NSArray arrayWithObjects: [dateSubviewController dateTable], nil]; 

を使用するようにしてください。 TableViewデリゲートメソッドも呼び出されません。しかし、それはクラッシュしません。

私はもう何をすべきか分かりません。私はこの問題を約6時間、数回デバッグし、インターネット調査を行ったが何も見つけられなかった。御時間ありがとうございます!

答えて

3

時間の仕事の後、私は今これがオートリリープールの問題であると考えました。私はのViewController ...

DateSubviewController *dateSubviewController = [[DateSubviewController alloc] init]; 

を初期化すると...それはローカル変数だったとのviewDidLoad()メソッドが終了するとすぐにリリースしました。私はinstancevariableとしてそれを使用しなければならなかった!私はこれが将来の読者のためのエラーを修正することを願っています!あなたはViewControllerをを初期化したいクラスのHEADERFILEで

:あなたの答えのための

self.dateSubviewController = [[DateSubviewController alloc] init]; 
+2

問題が解決しました:-) –

0

エラーによると、tableViewのdataSourceがtableViewに必要なメソッドに応答しないことは明らかです。私はあなたがすでにこのdataSource(tableView:numberOfRowsInSection :)を実装しているオブジェクトを持っていると思うので、このオブジェクトにtableViewのdataSourceプロパティを設定しなかった可能性があります。コードやXibsをチェックし、tableViewのdataSourceリンクを修正してください。

これをまず実行します。

後に別の問題が発生することがあります。わかるでしょ。しかし、まずこれを修正し、あなたのエラーを読んで理解することを学んでください。 「インスタンス」、「セレクタ」、「例外」など、理解できない言葉で自分自身を文書化する。デバッグを成功させるには、エラーを理解することが重要です。

+0

おかげで、私はそれのすべてをした:

@property (strong, nonatomic) DateSubviewController * dateSubviewController; 

その後、この方法でそれを初期化します。私は、tableViewメソッドを実装し、tableViewはストーリーボードに正しく接続されています。私はIT学生で、インスタンス、セレクタ、例外について知っています。私はこのエラーを修正するために考えることができるすべてをしましたが、私はそれを理解することはできません。 –

関連する問題