我有4个UIViewController,即vcA、vcB、vcC和vcD。现在,vcB有一个有两行的tableView。vcB是vcA上的subViewed,它有一半的一面,就像iPad的设置屏幕。到这里为止,它还可以正常工作,但是如果我单击vcB的tableview的第一个单元格,那么vcC应该是subViewed的另一半,同样地,通过选择vcB的tableview的第二个单元格vcD应该是subViewed和vcC应该删除。
这是我的屏幕:

假设您选择“selecting”,另一个vcC的视图应该通过选择"Notification“vcD来查看&类似于subViewed,vcC应该删除。,别担心框架,我会设置的。并假设父视图在这里是vcA。
在这里,我尝试了delegate,但在subViews上,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)
}
}
}发布于 2017-07-07 14:05:59
您分配了“iPadVc”,没有显示,您正在尝试添加countryVC视图。这是错误的。您刚刚分配了vc,但是在添加时,vc view将是nil。
我的建议:将vcA对象引用传递给vcB,同时向vcA.view添加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)
}
}
}
}https://stackoverflow.com/questions/44971848
复制相似问题