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