私は現在iOSプロジェクトに取り組んでおり、まったく新しいプロジェクトです。
問題の説明:独自のTableView(UITableViewを含むUITableViewControllerの派生)を作成しました。残念ながら、メソッド「didSelectRowAtIndexPath」は呼び出されません。それでもTableViewをスクロールできます-行を選択できません!
私のプロジェクトの説明(-構造):
MyAppDelegate-含まれていますMyWindowMyWindow-使用MyRootViewControllerMyRootViewController-含まれていますMyFirstViewControllerMyRootViewController-含まれていますMySecondViewControllerMyFirstViewController-開始ビューとして、ビューといくつかのボタンとラベルのみが含まれます。MyFirstViewController-実装ViewMediatorMySecondViewController-含まれていますMyTableViewControllerMySecondViewController-実装ViewMediatorViewMediator-ビューがお互いを知らなくても通信できるようにするプロトコルMyTableViewController- から派生UITableViewControllerMyTableViewController-UITableView(コンストラクターで作成された)が含まれますMyTableViewController-オーバーライドcellForRowAtIndexPath(これは機能するため、要素が表示されます)MyTableViewController-オーバーライドdidSelectRowAtIndexPath(呼び出されることはありません)MyTableViewController-含まれていますMyTableViewModelMyTableViewModel-ファイルを読み取り、データをロードするためのクラスのみTableView私がすでに試したこと:
- 3.1「MyTableViewController」を、含まれているUITableViewのデリゲートとして手動で設定します。これも自動的に行う必要があります。
- 3.2 UITableViewを「MyTableViewController」の外部に作成し、後で「MyTableViewController.view」または「MyTableViewController.tableView」に設定しました。
- 3.3UITableViewでUserInteractionを手動で有効にしました。スクロールは正常に機能するため、これは実際には問題にはならないだろうと思いました。
おかしな事実:以前は機能していましたが、ViewControllerの通信に小さな変更を加えただけです。以前は直接(一方向)通信していましたが、現在はメディエーター(双方向)によって通信します。これはよく知られているメディエーターパターンです。これはビューとそのコントローラーに影響を与えるべきではありませんよね?