Ios 放松不需要';行不通

Ios 放松不需要';行不通,ios,xcode,swift,viewcontroller,navigationcontroller,Ios,Xcode,Swift,Viewcontroller,Navigationcontroller,iOS 8.1 代码6.1.1 我的故事板是: 选项卡栏控制器->导航控制器(NC)1->视图控制器(VC)1->NC2->VC2->NC3->VC3 从VC2到NC3是显示详细信息阶段。我在VC3中有一个“取消”按钮,该按钮应该放回到NC2/VC2 我已经在NC2和VC2的自定义类的头文件和swift文件中添加了unwind方法,并在按住Ctrl键的同时从Cancel按钮拖动到VC3 exit 我还尝试按Ctrl键拖动到NC3出口或NC2出口 什么也没发生。有什么想法吗?解决办法 已经调查过了

iOS 8.1

代码6.1.1

我的故事板是: 选项卡栏控制器->导航控制器(NC)1->视图控制器(VC)1->NC2->VC2->NC3->VC3

从VC2到NC3是显示详细信息阶段。我在VC3中有一个“取消”按钮,该按钮应该放回到NC2/VC2

我已经在NC2和VC2的自定义类的头文件和swift文件中添加了unwind方法,并在按住Ctrl键的同时从Cancel按钮拖动到VC3 exit

我还尝试按Ctrl键拖动到NC3出口或NC2出口

什么也没发生。有什么想法吗?解决办法

已经调查过了,但不知道我是否遗漏了什么

编辑 将println语句添加到unwind方法中,但不打印任何内容,因此不调用该方法。 VC2的头文件代码:

#ifndef SettingsViewController_h
#define SettingsViewController_h

#endif

@interface SettingsViewController (Workaround)
- (IBAction)unwindToSettings: (UIStoryboardSegue *)segue;
@end
VC2的swift代码部分

@objc(SettingsViewController) class SettingsViewController: UITableViewController{
  @IBAction func unwindToSettings(segue:UIStoryboardSegue){
        println("unwind")
  }
}

我的放松段工作得很好。从VC3返回,您在VC2中的代码应该如下所示:

@IBAction func didFinishWithVC3(segue: UIStoryboardSegue) { 
    let controller = segue.sourceViewController as VC3 
    someVariableInVC2 = controller.someVariableInVC3 // If you need to get data from VC3 to VC2
}
请注意,您需要
segue:UIStoryboardSegue
参数


然后,只需控制从VC3中的取消按钮拖动到故事板中VC3上方的退出图标,然后选择“didFinishWithVC3”.

我创建了一个具有相同结构的虚拟项目:选项卡栏控制器后跟导航控制器,但它不起作用,因此我怀疑它与选项卡栏控制器和控制器的结构有关

最后使用当前模式segue和

dismissViewControllerAnimated(true, completion: nil)

您可以添加VC2中的“展开”功能代码吗?是的,完成了所有操作,但什么也没发生:(