2

私たちのアプリの 1 つで、愚かな UI の問題が発生しました。

ストーリーボードの初期ビュー コントローラーである UINavigationController から始めます。ルート ビュー コントローラーは、UIScrollView をサブビューとして使用する UIViewController です。UIScrollView 自体はページングが有効になっており、いくつかの UIViewControllers が含まれています。

ここに私の問題があります:UIScrollViewのUIViewControllers(ビュー#1と呼びましょう)はボタンイベントに反応し、前のUIViewControllerからデータを取得する必要があり、送信する必要がある別のUIViewController(ビュー#2)にセグエを作成する必要がありますデリゲート メソッドによってデータが返されます。

UINavigationController を取得して View #2 をプッシュしようとしても、何も起こりません。もちろん、presentViewControllerを介して表示することもできます。

ダイアグラム

これがうまくいかない理由と、うまくいかない理由を教えてください。この時点で少し立ち往生していて、どうすればよいかわかりません。

4

1 に答える 1

2

リンゴの開発ガイドラインに反する別の UIViewController (少なくとも iOS5 より前) 内に UIViewControllers を配置しないでください。UIViewControllers ライフサイクルは内部で管理され、UIViewController をサブビューとして直接追加すると、

viewDidLoad
viewWillAppear
viewDidAppear
. . .

呼び出されず、私の経験から、本当に不安定な動作につながります

カスタムUIViewオブジェクトを使用して、各ビューの内部ロジックを取得してみてください。これはMVCパターンを多少壊しますが、これが問題に対処する最良の方法です

しかし、iOS 5.0 では、子ビュー コントローラーを追加することで、これらのライフサイクル イベントを正しく処理するコンテインメント UIViewControllers が追加されました。したがって、iOS 5 以降のデバイスのみをターゲットにしている場合、これはおそらく良い方法です。

これこれを見てください

于 2012-10-18T09:01:04.787 に答える