2011-12-30 6 views
2

まず、iOS開発には全く新しいものがあるため、より簡単な方法があることを願っています。デリゲートを設定してもdidItelectRowAtIndexPathにUITableViewが応答しない

私はiOS 5ストーリーボードを使用して動的に生成された質問表示を作成しています。私はUIViewControllerの内部にUITableViewControllerを埋め込もうとしているので、さまざまなタイプの質問を定義できますが、同じ基本テンプレートを使用できます。コードは機能しますが、セルを選択しようとするとdidSelectRowAtIndexPathは決して起動されません。私は、データソースとデリゲートをチェックして、両方が正しいコントローラに設定されています。埋め込みのための私のコードは次のとおりです。私は本当にストーリーボードのようなので、

CGRect questionViewRect = self.QuestionContentView.bounds; 
UIViewController<QuestionViewProtocol>* questionView = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"MultipleChoiceQuestion"]; 
[questionView.view setFrame:questionViewRect]; 
[self.QuestionContentView addSubview:questionView.view]; 

は再び私はこれをやっているが、私は動的に質問の異なる種類のために何か他のものにそのテーブルのビューを変更したいです。助けてくれてありがとう!

私のストーリーボードのスクリーンショットです。私は、コントローラのビューを左側のコントローラのサブビューに埋め込んでいます。

enter image description here

+1

どこがUITableViewControllerですか? btwの場合は、questionViewControllerのようなView Controllerに名前を付ける必要があります。 UIViewオブジェクトと混同する可能性は低くなります。 – MadhavanRP

+0

UITableViewControllerの 'allowsSelection'プロパティが' YES'に設定されていることを確認してください。 –

+0

@MadhavanRPインスタンス化されているコントローラは、UITableViewControllerのサブクラスです。私はプロトコルでジェネリッククラスを使用しているので、テーブルビューコントローラではない他のコントローラがあるかもしれません。私はUITableViewControllerとクラスの具体的な名前を試しましたが、どちらもうまくいきませんでした。 – devonh

答えて

0

だから私はそれを考え出しました。問題は、私のサブビューのコントローラがメソッドでインスタンス化され、LOCAL変数に割り当てられていたことでした。これは、それが保持されていなかったことを意味するので、テーブルビューが後でそれにアクセスしようとしたときに、それは無限のポインタになりました。 objective-cでは、nilポインタのメソッドはnilを返すだけなので、プログラムはクラッシュしませんでした。メインコントローラークラスへの強力なポインターを追加し、そのコントローラーをインスタンス化されたサブコントローラーに設定すると、完全に機能しました。

関連する問題