我的应用中有多个视图控制器。我想知道,有没有办法从第三个视图到家,但仍然不理会第三个观点?优选地,没有导航控制器。但如果我需要,请告诉我。谢谢你的帮助。
答案 0 :(得分:0)
您需要实现自定义Segue,然后将它应用于两个视图之间的Segue。
以下是一个示例(当前视图将替换之前的视图):
class ReplaceSegue: UIStoryboardSegue {
override func perform() {
let sourceController: UIViewController = self.sourceViewController
let destinationController: UIViewController = self.destinationViewController
let navigationController = sourceController.navigationController!
let controllerStack = NSMutableArray(array: navigationController.viewControllers)
controllerStack.replaceObjectAtIndex(controllerStack.indexOfObject(sourceController), withObject:destinationController)
navigationController.setViewControllers(controllerStack as NSArray as! [UIViewController], animated: true)
}
}
答案 1 :(得分:0)
是的,这是可能的。在代码中尝试以下函数。 在您的家庭视图控制器中,输入一种欢迎/接收segue功能:
@IBAction func unwindToVC(segue: UIStoryboardSegue) {
if let sourceViewController = segue.source as? *Name of third view controller* {
//in here you can now access any information you
//want to retrieve from the third view controller
}
}
//In your third viewController put the following:
//make sure you assign cancelSegue to a button or whatever
func cancelSegue() {
performSegue(withIdentifier: "segueToMain", sender: self)
}
然后在你引用的第三个视图控制器的故事板中,右键单击从视图控制器顶部的黄色圆圈拖动到橙色方块“exit”,然后它将弹出一个名为unwindToVC的选项并单击它。确保它已被识别(正如你在cancelSegue中看到的那样,我的名字叫做segueToMain作为标识符。
现在当你在第三个视图控制器中时,你应该能够按下指定的按钮,它将执行segue
这对我有用,希望有所帮助