6

私は 1 年前に古いバージョンの Xcode で多くの iOS アプリケーションを作成しました。新しいプロジェクトを開始したばかりで、最新の Xcode でストーリーボード機能を発見しました。これは、相互にリンクされた約 30 の画面で構成されているため、私が作成しているアプリケーションに最適であることがわかりました。

私の質問は、ストーリーボードとセグエをどのように構成して、アプリケーションが画面を循環するパスをたどることができるかということです。モーダル オプションを使用して、画面 1 を画面 2 に、次に画面 2 を画面 1 に単純にセグエするをいくつか見てきました。これは明らかに機能しますが、この方法でビルドされたアプリケーションをデバッグすると、実行されるセグエごとに各画面 (ビュー コントローラー) の新しいインスタンスがインスタンス化されます。下の図(申し訳ありませんが、私は素敵な絵を描きましたが、初心者のステータスのために投稿できませんでした)、新しい画面を作成せずに、画面 1 から画面 2、画面 3、元の画面 1 に戻るにはどうすればよいですか実例?

// Screen 1 --> Screen 2 --> Screen3 
//     ^                         | 
//     |                         | 
//     +-------------------------+ 
4

2 に答える 2

3

わかりました、私はこの質問を提起して以来、かなりの調査を行ってきました。私はその質問に対して合理的な答えを提供できると信じています. 要するに、私が質問で提案していたアプローチは、ストーリーボードとセグエが実際に機能する方法と互換性がありません。セグエは常に、対象となるビュー コントローラー/ビューの新しいインスタンスをインスタンス化します。これは、画面 3 から画面 1 に戻るとき、元の画面ではなく、画面 1 の新しいインスタンスに移動することを意味します。これを解決するために、ストーリーボードを少し異なる方法で実装します。

// Screen 1 --> Screen 2
//     |
//     +------> Screen 3

次に、画面 2 と 3 からの「次の画面」メッセージを (デリゲート/プロトコル経由で) リッスンするように画面 1 を構成します。

画面 1 のユーザーが画面 2 のボタンを選択すると、ストーリーボードとセグエが画面 2 のモーダル インスタンス化を処理します。画面 2 を開き、新しい画面 1 -> 画面 3 セグエを介して画面 1 に画面 3 を起動させます。

このアプローチには、スクリーン 1 をループ内の後続のすべてのスクリーンのメイン コントローラーにできるという利点があります (私の例では、ループ内に 10 個のスクリーン/エクササイズがあります)。唯一の欠点は、絵コンテが画面の流れをうまく反映していないことです。

iOS プロジェクトで同じことを達成しようとしている他の人に役立つことを願っています。

于 2012-11-10T03:04:14.000 に答える
-1

私はその状況の良い解決策を見つけました-ソースビューコントローラーを閉じるための新しいカスタムセグエを作成します。どうやって?これを作成するには、リンクhttp://jeffreysambells.com/2014/02/19/dismissing-a-modal-view-using-a-storyboard-segueを見ることができます。 他の人に役立つことを願っています =)

于 2014-11-14T17:58:37.617 に答える