2017-07-07 10 views
0

私は4 UIViewController、すなわちvcA、vcB、vcCおよびvcDを持っています。現在、vcBには2行のtableViewがあります。そして、vcBは、iPadの設定画面のような半面でvcAでサブビューされます。ここまでは正常ですが、vcBのtableViewの最初のセルをクリックすると、vcBを別の半面にサブビューする必要があります。同様に、vcBのtableviewの2番目のセルvcDをサブビューし、vcCを削除する必要があります。サブビューの代理人

iPad Screen

uは "通知" のVCDを選択することにより、similary &をsubviewdする必要があり、他のVCCのビューがsubViewedしなければならない "を選択国を" 選択とし、VCCが削除する必要があります。

は、ここに私の画面です。 、フレームについて心配しないで、私はそれを設定します。ここで親ビューはvcAであると仮定します。

ここでは、私はdelegateで試しましたが、サブビューでdelegateが動作していないと思いますが、これはNSNotificationCenterで可能ですが、他の方法がありますか?

ありがとうございました。ありがとうございます。

は、私は結果を得るために使用している方法に従い

を更新しました。しかし、正しい方法ではなく、私が探していることも起こっていないことを知っています。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     print(indexPath.section) 
     print(indexPath.row) 
     if UIDevice.Display.typeIsLike == UIDevice.DisplayType.ipad { 

      let iPadVc = iPadSettingViewController() 

      if indexPath.section == 0 && indexPath.row == 0 { 

       var sliderVC: SettingsViewController! = nil 

       sliderVC = self.storyboard?.instantiateViewController(withIdentifier: "SettingsViewController") as! SettingsViewController 

       sliderVC.view.frame = CGRect(x:0, y: 64, width: CGFloat((iPadVc.view.frame.size.width)/2.4), height: CGFloat(iPadVc.view.frame.size.height-64)) 
       iPadVc.view?.addSubview(sliderVC.view) 


      } 
      else if indexPath.section == 0 && indexPath.row == 2 { 

       var countryVC : CountryViewController! = nil 

       countryVC = self.storyboard?.instantiateViewController(withIdentifier: "CountryViewController") as! CountryViewController 

       countryVC.view.frame = CGRect(x:CGFloat((iPadVc.view.frame.size.width)/2.4), y: 64, width: CGFloat((iPadVc.view.frame.size.width) - (iPadVc.view.frame.size.width)/2.4), height: CGFloat(iPadVc.view.frame.size.height-64)) 

       iPadVc.view?.addSubview(countryVC.view) 

      } 


     } 
} 
+0

vcA.viewにあなたがしようとしたビューコントローラの交換のコードを追加、追加しながらvcBvcAオブジェクト参照を渡します。それはiPad専用です。あなたもiPhoneをサポートしていますか? – Subramanian

+0

@Subramanianそれは当面iPad専用です。iPhoneの場合は画面が異なって見えますが、私はすべてiPhone用ですが、iPad用に固執しています。 :/ –

+0

あなたが試したコードを追加できますか? – Subramanian

答えて

0

あなたは「iPadVc」割り当てられ、提示することなく、あなたがcountryVC view.itのは間違って追加しようとしています。あなたはvcを割り当てただけですが、追加する時点でvc viewnilになります。

私の提案は:vcB.view

class vcA: UIViewController { 

    func loadSlideVC() { 
    viewcontrollerB = //Initialize the vcB 
    viewControllerB.containerVC = self 
    //Add the view to vaA 
    } 
} 

class vcB: UIViewController { 
    weak var containerVC: vcA? 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if UIDevice.Display.typeIsLike == UIDevice.DisplayType.ipad { 
    if indexPath.section == 0 && indexPath.row == 0 { 

     var sliderVC: SettingsViewController! = nil 
     sliderVC = self.storyboard?.instantiateViewController(withIdentifier: "SettingsViewController") as! SettingsViewController 
     containerVC?.view?.addSubview(sliderVC.view) 
    } 
    } 
    } 

} 
+0

SliderVCは画面に固定されます。私は国を選択して、SliderVCの横にCountry View Controllerビューを追加します。 –

+0

iPadの設定画面とまったく同じです。 –

+0

slideVCから国をクリックしたときに追加するVCは何ですか? – Subramanian