【发布时间】:2020-09-03 18:23:05
【问题描述】:
我有一种情况,我将一个子视图控制器“B”呈现到另一个视图控制器“A”上。视图控制器“B”有 5 个按钮,这些按钮可以连接(推送)到第三个视图控制器“C”。问题是,一旦我在视图控制器“C”处,我希望能够使用展开转场从 C-->A 开始,而 B 不会出现在中间。
// view controller A class
class AViewController: UIViewController {
@IBAction func goToViewControllerB(_ sender: UIButton) {
let viewControllerB = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "viewControllerB_ID") as! BViewController
self.addChild(viewControllerB)
viewControllerB.view.frame = self.view.frame
self.view.addSubview(viewControllerB.view)
viewControllerB.didMove(toParent: self)
}
@IBAction func unwindToStart(segue: UIStoryboardSegue) {
print("back from view controller C!")
}
}
//view controller B class
class BViewController: UIViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let identifier = segue.identifier {
switch identifier {
case "segueFromBToC_1":
if let destVC = segue.destination as? CViewController {
//pass data
}
// ... cases 2-4
case "segueFromBToC_5":
if let destVC = segue.destination as? CViewController {
//pass data
}
default: break
}
}
}
}
// empty CViewController class
我知道将以下代码放在我的视图控制器 B 类中会将其从父视图控制器“A”中删除,但是我不能再从“B”切换到“C”,因为“B”没有'不存在。
self.view.removeFromSuperview()
self.removeFromParent()
self.willMove(toParent: nil)
我想知道我应该把上面的代码放在哪里,或者我是否应该从子视图控制器中分离出来?我也没有使用导航控制器,因为我不知道如何使用子视图控制器来实现它们。我应该为 5 个按钮中的每一个设置 @IBAction 插座并将上面的代码放在那里吗?
【问题讨论】:
标签: swift segue viewcontroller unwind-segue removefromsuperview