0

私は、サンプルプロジェクトが少ないiOSを学んでいます。私は、最初のVCにはいくつかのボタンとマップビューがあり、2番目のVCには一連の結果を示すテーブルビューがあるという点で、2つのView Controllerがあります。私は両方のviewcontrollersをnavigationViewControllerに埋め込みました。First VCからボタンをクリックすると、(ビューセグを使用して)テーブルビューを表示でき、ナビゲーションを通じて最初のVCに戻ることができます。今私のクエリは、全面的にtableviewをパディングするのではなく、firstVCで定義された1つのビューオブジェクト(マップビュー)の代わりにtableview(2番目のVC)を表示したいのです。私の問題は、別のViewControllerを表示するときです。私はまだsegue.Iをトリガーするボタンをクリックすると、私はmapviewの上にsecondVCを表示しようとしているので、firstVCからいくつかのviewオブジェクトを見たいと思っています。 SecondVCのtablview結果をfirstVCにロードする必要があります。可能であれば、あなたのアイデアを教えてください。同じことを達成するための他のアイデアが最も歓迎されます。ViewControllerを切り替える

答えて

0

スリーカンスGundlapalli、

あなたがする必要があるすべてはあなたのビューコントローラへのサブビューとしてテーブルビューコントローラのビューを追加することです。プロセスを簡略化するために、私は個人的にContainerViewを使用したいと考えています。

ステップ1:ViewViewにContainerViewを追加し、自動レイアウト制約を追加します。場所に保管するためにあなたのtableViewに任意の自動レイアウト制約を適用します:)

例: enter image description here

ステップ2:view.letsはcontainerViewとしてそれを呼んでコンテナにIBOutletをドラッグします:)

ステップを3:今あなたにそれまで2つのv地図をロードするためにコントローラ1を表示し、tableViewをロードするために1を表示するか、ビューコントローラのサブビューとしてマップビューを表示し、それを隠すか削除してコンテナビューを追加しますが、私は個人的には、別のVC

したがって、2つのVCを作成して、viewController1として呼び出すことができます。& viewController2 Savy ??

ステップ4: が実際にVCをロードし、あなたのViewController

func changeEmbededVC(for status : Int) { 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     if status == 0 { 
      mehereButton.tag = 1 
      let vc = storyboard.instantiateViewController(withIdentifier: "viewController1") 
      vc.willMove(toParentViewController: self) 
      containerView.addSubview(vc.view) 
      self.addChildViewController(vc) 
      vc.didMove(toParentViewController: self) 
     } 
     else { 
      mehereButton.tag = 0 
      let vc = storyboard.instantiateViewController(withIdentifier: "viewController2") 
      vc.willMove(toParentViewController: self) 
      containerView.addSubview(vc.view) 
      self.addChildViewController(vc) 
      vc.didMove(toParentViewController: self) 
     } 

    } 

にサブビューとしてのビューを追加する方法を記述することができます私は、コードはかなり自明であると考えている:Dは今mehereButton.tag = 1は何ですか?シンプルなボタンの押しで表示を切り替えたいあなたはありません:Dそれゆえ私はmehereButtonためIBOutletを作成し、そのタグを変更する:)

ついにmehereButton

@IBAction func buttonTapped(_ sender: UIButton) { 
    self.changeEmbededVC(for: self.mehereButton.tag) 
} 

のIBActionではなく、我々がする必要があるしていますデフォルトでは、ビューの負荷1はそうではありません:D ので、私は具体的には、あなたの質問に答え

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    self.changeEmbededVC(for: 0) 
} 

希望のおviewDidAppearを変更:PIは、あなたがドンとあなたがいないどちらもアップ投票や答えを受け入れることができます知っています」十分な評判を持っている:)しかし、それが望む今後も誰かを助けてください:)

+0

まず、あなたの答えに感謝します。私はそれを実装するには固執しています、別の2つのviewcontrollersを別々に使用せずに、ボタンクリックでtableviewとmapviewのビューを切り替える方法をいくつかのガイドラインを教えてください。 –

+0

マップビューを追加して自動レイアウトの制約を適用し、mapViewの上にtableViewを追加し、自動レイアウトの制約を適用して、tableView用にIBOutletを1つ、mapView用に1つ、タグ値に基づいてボタンをクリックすることができますテーブルまたはマップビューをそれぞれ非表示にする:) thats all buddy :) –

+0

Sandeep、かなり素早い応答をいただきありがとうございます。私は、私が実装しようとしていることについてあなたに簡単に伝えれば、より良いことだと思います。私が最初のVCで言ったように、私はいくつかのビューオブジェクトを持っていて、それらのうちの1つはマップビューです。私はwebサービスを持っているので、毎回paramとして与えてくれる場所を呼び出して、注釈をつけて地図上に同じ場所を表示している場所のセットを返すことはほとんどありません。私はFirstVCで地図のアウトレットを持っているので、私はそれを参照して何でもしたいです。コンテナビューを使用すると、子ビュー(mapView)を読み込むことはできますが、コンセントを取得するにはどうすればいいですか。 –

関連する問題