0

私は現在iOSプロジェクトに取り組んでおり、まったく新しいプロジェクトです。

  1. 問題の説明:独自のTableView(UITableViewを含むUITableViewControllerの派生)を作成しました。残念ながら、メソッド「didSelectRowAtIndexPath」は呼び出されません。それでもTableViewをスクロールできます-行を選択できません!

  2. 私のプロジェクトの説明(-構造):

    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. 私がすでに試したこと:

    • 3.1「MyTableViewController」を、含まれているUITableViewのデリゲートとして手動で設定します。これも自動的に行う必要があります。
    • 3.2 UITableViewを「MyTableViewController」の外部に作成し、後で「MyTableViewController.view」または「MyTableViewController.tableView」に設定しました。
    • 3.3UITableViewでUserInteractionを手動で有効にしました。スクロールは正常に機能するため、これは実際には問題にはならないだろうと思いました。

おかしな事実:以前は機能していましたが、ViewControllerの通信に小さな変更を加えただけです。以前は直接(一方向)通信していましたが、現在はメディエーター(双方向)によって通信します。これはよく知られているメディエーターパターンです。これはビューとそのコントローラーに影響を与えるべきではありませんよね?

4

1 に答える 1

0

テーブル ビュー コントローラーをテーブル ビューのデリゲートとして指定するだけでなく、viewビュー コントローラーのプロパティが正確に tableView であることも必要です。

別のビューとそのサブビューとしてテーブル ビューを持ちたい (他のサブビューを許可する) 場合は、.UIViewControllerではなくサブクラス化する必要がありますUITableViewController

于 2012-08-06T07:29:12.893 に答える