1

UITableViewController の使用を避けるべきであると述べている投稿が多数あります。ますます諦めたくなるのですが、アプリケーション全体に結び付けられた CoreDataTableViewController スーパー クラスを使用していて、すべてを書き直す時間がありません。

もちろん、UITableViewController のビューは画面全体 (iPad プロジェクト) を占めるべきではないため、フレームを適切なサイズに設定して、通常の UIView インスタンスのサブビューとして配置します。その時、奇妙なことが起こり始めます。

カスタム クラス (GroupsTableViewController->CoreDataTableViewController->UITableViewController) を、すべて正常に動作していたテスト プロジェクトから現在のプロジェクトにコピーしました。次に、ビューを alloc/init して addSubview します。

最初、テーブルは空で表示されます。何を与える?viewWillAppear: メッセージは送信されません。なに…?では、手動で呼び出します (この時点で、私はすでに自分自身を疑い始めています)。次に、テーブルは実際にはコンテンツで満たされていますが、対話性はすべて失われています。タップもスクロールもありません。

すべてに userInteractionEnabled を設定しようとしましたが、結果はありませんでした。これはばかげたことだと思います。しかし、ここで私は立ち往生しています。

誰かが私を正しい方向に向けることができますか? どこかにデリゲートを忘れましたか? それとも、未送信メッセージですか?

4

1 に答える 1

2

発生している問題の 1 つは、ネストされた UIViewControllers が viewWillAppear: などの適切なイベントを受信しないことです。Apple のガイドラインによると、UIViewController は画面全体を占めるべきであり、部分的なビューを表すべきではありません (もちろん、UITabBarController、UINavigationController、および UISplitViewController は例外です)。GroupsTableViewController をメイン コントローラーとして設定してみてください (UINavigationController にある場合はプッシュしてみてください。分割ビューの場合は詳細ビューにするなど)。それが機能する場合は、問題の原因となっているイベントがいくつかあります。それが役立つことを願っています!

于 2010-12-21T02:46:49.230 に答える