2016-06-26 12 views
0

ナビゲーションコントローラ付きの画面があり、ナビゲーションバーには、別のビューコントローラからのテーブルを表示するボタンがあり、今、これらの項目のいずれかをクリックすると別のビューコントローラを別の画面に開きたい。popoverpresentationビューコントローラから別のビューコントローラへナビゲートする方法

しかし、私はnavigationController?.pushViewController(tab, animated: true) を使用する場合は、新しいビューコントローラは、その小さなポップ・ビュー自体

内に表示され、私は navigationController?.presentViewController(tab, animated: true) を使用している場合、ナビゲーションバーは、その画面上に存在しないと私は戻って前の画面に行くことができません。どのように私が最初にポップアップリストを表示した画面に戻ることができるようなやり方でそれを行う。

+0

ストーリーボードを使用していますか、コードしていますか? – Sweeper

+0

コードは主に@Sweeper –

+0

ですから、それを示すVCとポップオーバーコントローラの間には段差がありますか? – Sweeper

答えて

0

ストーリーボードを使用している場合は、本当に簡単です。あなたがしていない場合、あなたはする必要があります。ストーリーボードを使うのはとても良いことです。

のは、あなたのビューコントローラ、これらの名前呼ぶことにしましょう:

  • をポップオーバーは、ユーザが選択したときにポップオーバーコントローラは、ビューコントローラを表示するにはPopoverVC
  • と呼ばれるSourceVC
  • と呼ばれる表示することができますビューコントローラをテーブルビューから何かが呼び出されますNewVC

あなたのを接続するshow segueを追加しますあなたのNewVCへの。 segueに識別子を与えます。

PopoverVCからSourceVCに巻き戻す巻き戻しセグを追加します。まず、あなたのSourceVCでこれらのメソッドを追加:

func unwind(segue: UIStoryboardSegue) { 
    if let vc = segue.sourceViewController as? PopoverVC { 
     // get the thing that the user selected and store it somewhere 
     // perform a segue that shows NewVC 
    } 
} 

override func prepareForSegue(segue: UIStoryboardSegue) { 
    if let vc = segue.destinationViewController as? NewVC { 
     // pass the thing that the user selected to the NewVC 
    } 
} 

その後、SourceVCに「終了」ブツにPopoverVCとコントロールをドラッグして選択します。そして、 "unwind:"を選択します。これにも識別子を戻してください。

ユーザーがテーブルビューで行を選択すると、unwind segueを実行して、ユーザーが選択したものをクラスレベルの変数に格納して、SourceVCに渡すことができます。

+0

popovervsの内容はpopovervcにあるので、上記のコードをソースvcに追加すると、popovervcはリスト(テーブル)形式のデータをポップしたvcなので、sourcevcからnewvcを表示するにはどうすればよいですか? –

+0

コメントを見る '/ /ユーザが選択したものを入手し、どこかに保存する'?ユーザーが行を選択すると、ユーザーが選択したものを 'PopoverVC'の変数に格納します。 'userSelectedThing'と呼ぶことにしましょう。 'vc.userSelectedThing'を' SourceVC'の変数に格納するだけです。 'userSelectedThing'とも呼ぶことにしましょう。 'prepareForSegue'では、' self.userSelectedThing'を 'NewVC'に渡します。うん、それは複雑だと分かっています。結局のところ、3つのVCに情報を渡しています。 – Sweeper

+0

私はリラックス・セグを使用しましたが、奇妙なことに私はnewVCにナビゲートしてnewVCに瞬時にナビゲート(プッシュ)し、その後私をsourceVCにスローします@スウィーパー –

関連する問題