2017-05-06 4 views
0

enter image description hereステップベースのビューコントローラフローを作成する

画像を見ればわかります。私は、このようなフローを実装するのに最適なパターンが何であるか疑問に思っています。 ViewControllersの束をまとめることができますが、自分自身を繰り返しすぎるように感じることができます。私は再利用可能なxibを作成しようとしましたが、それでもすべてViewControllerのステップを更新してコンテンツ/入力タイプを追加する必要がありました。私は少なくとも私のストーリーボードのすべての制約を繰り返さないでください。

これらはすべてこの画面の共通コンポーネントです。彼らは自然にステップに応じて異なる内容を保持するだろう。私はまた、戻るボタンがあります。私はこのxibの中にレンダリングのカスタムビューを生成する異なる入力タイプのファクトリを持っています。誰もが同様のデザインをしていて、これを実装する最良の方法は何ですか?

注:私はコードを共有することができましたが、現時点では非常に反復的ですが、私は多くのストーリーボード/ xibsを持っていますので、共有することが多いと思います。写真が理解しやすいかもしれません。

+0

uipageviewcontrollerのgoogle検索を試しましたか?何が必要なのかを示すチュートリアルがたくさんあります。いくつかのサンプルコードは... https://spin.atomicobject.com/2015/12/23/swift-uipageviewcontroller-tutorial/ –

+0

私は持っています。私は別のフローでUIPageViewControllerを使用しますが、私が望むものとまったく同じようには感じません。私はこれのために同様のコンポーネントを作ることを考えていました。 – user3832583

答えて

1

これは、ストーリーボードの1つのビューコントローラで行うことができます。

  1. ビューコントローラクラスファイルを作成します(私の例では ViewController)。
  2. ストーリーボードにビューコントローラを追加し、カスタムクラス名を作成したばかりのクラスに設定します。
  3. ナビゲーションコントローラにビューコントローラを埋め込みます(ストーリーボードでビュー コントローラが選択されている場合は、[エディタ]> [埋め込み先]> ナビゲーションコントローラを選択します)。
  4. ストーリーボードのビューコントローラにボタンを作成します。
  5. ボタンからビューコントローラへのセグを作成します - はい、ボタンを含むビューコントローラと同じです!これを行うには、ボタンからビューコントローラにドラッグを制御します。 segueに識別子を付けます(例: "nextStep")。

ボタンがタップされるたびに、同じビューコントローラの新しいインスタンスに分割されます。あなたはあなたが望むだけ何度も繰り返すことができます。ナビゲーションコントローラに入っているので、簡単に後退することができます。あなたのビューコントローラクラスは、あなたがオンになっているステップを追跡する状態を管理し、あなたが最後に達した時に決定する必要があります興味深い何かをすることはもちろん

、など

ここでは単純な実装であります事前にステップ番号をインクリメントするView Controllerの値を入力します。

class ViewController: UIViewController { 

    var stepNumber = 1 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.title = "Step \(stepNumber)" 
    } 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "nextStep" { 
      if let destination = segue.destination as? ViewController { 
       destination.stepNumber = stepNumber + 1 
      } 
     } 
    } 
} 
0

ビューコントローラテンプレートを独立したnibファイルに置きます。そのnibファイルを使用するUIViewControllerのカスタムサブクラスを作成し、ウィザードの1ステップからデータを提示する方法を理解します。実行時に、サブクラスのインスタンスを作成し、各ステップのデータを入力します。一度にすべての操作を行うことができます(たとえば、UIPageViewにスタックできるため)。または、別の方法で提示したい場合は、一度に1つの手順を実行できます。

関連する問題