我从public class TransportDelegator {
public void send(Message msg) throws MessagingException {
Transport.send(msg)
}
}
开始,其中包含一个名称列表。
当用户点击名称时,它们将被视为视图控制器。
在tableViewController
中,用户可以按下一个按钮,将其带到另一个表视图控制器。
布局如下: TableViewController(1) - > ViewController - > TableViewController(2)
我的问题是,如何从第二个TableViewController弹回第一个viewController
。
我的TableViewController
是我的signIn View控制器,所以我无法弹回root。
答案 0 :(得分:2)
您可以将其设置为弹出rootViewController
:
self.navigationController?.popToRootViewController(animated: true)
<强>更新强>
由于您的rootViewController
不是您想要结束的地方,因此您可以遍历controllers
并弹出特定的一个:
for controller in self.navigationController!.viewControllers {
if controller.isKind(of: TableViewControllerOne.self) {
self.navigationController!.popToViewController(controller, animated: true)
break
}
}
而不是TableViewControllerOne.self
更新到您想要的controller
。
答案 1 :(得分:0)
如果您熟悉segues,则可以实现展开segue。如果需要,这将为您提供将信息传递回TableViewController(1)的额外好处。要在TableViewController1中使用,您需要添加一些看起来像的代码:
@IBAction func unwind(fromTableVC2 segue: UIStoryboardSegue) {
if (segue.source is TableVC2) {
if let svc = segue.source as? TableVC2 {
// pass information back
}
}
}
然后在您的故事板中,您将转到您拥有TableVC2的位置并将黄色VC圆圈拖到出口并选择我们在上面创建的功能。将segue命名(对于此示例,我们将其称为&#34; UnwindToTableVC1&#34;),然后在TableVC2中的某处添加代码:
func setVariableToPassBack () {
// Set up variables you want to pass back
performSegue(withIdentifier: "UnwindToTableVC1", sender: self) }
这将带您回到您选择的目的地,并提供您希望传回的任何信息。
如果您不想传回任何内容,您只需要在TableVC2中调用以下行:
performSegue(withIdentifier: "UnwindToTableVC1", sender: self)