2017-07-07 73 views
0

我有4 UIViewController即vcA,vcB,vcC和vcD。现在,vcB有一个tableView两行。并且vcB在vcA上被子视图与iPad的设置屏幕一样。直到这里,它的工作正常,但我需要如果我点击vcB的tableView的第一个单元格,然后vcC应该在另一半侧subViewed,类似地通过选择vcB的tableview的第二个单元格vcD应subViewed和vcC应该删除。委托子视图

这里是我的屏幕:

iPad Screen

假设U选择 “选择国家” 外,其他VCC的观点,应该选择 “通知” VCD subviewd &与之相似,应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

添加视图控制器更换的代码,这你尝试。这仅适用于iPad吗?你也支持iPhone吗? – Subramanian

+0

@Subramanian它仅适用于iPad,而对于iPhone而言,屏幕会以不同的方式出现,我将这一切都用于iPhone,但是却坚持用于iPad。 :/ –

+0

你可以添加你试过的代码吗? – Subramanian

回答

0

您分配“iPadVc”和不出示您要添加countryVC view.it的错误。您刚刚分配了vc,但在添加时,vc view将为nil

我的建议:传递vcA对象引用vcB同时增加了vcB.viewvcA.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旁边,它会添加SubView国家视图控制器视图。 –

+0

与iPad的设定画面完全相同。 –

+0

从slideVC中点击国家时,您添加的vc是什么? – Subramanian