2017-07-07 77 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