放松不起作用

时间:2014-12-31 08:34:10

标签: ios xcode swift viewcontroller navigationcontroller

iOS 8.1

xCode 6.1.1

我的故事板是: 标签栏控制器 - >导航控制器(NC)1 - > ViewController(VC)1 - > NC2 - > VC2 - > NC3 - > VC3

从VC2到NC3显示细节segue。我在VC3中有一个取消按钮,可以解开到NC2 / VC2。

我已经将unwind方法添加到NC2和VC2的自定义类的标题和swift文件中,并按Ctrl +从取消按钮拖动到VC3退出。

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

什么都没发生。任何想法?解决办法:

已经查看Unwind Segue in Xcode 6.1.1 with storyboardUnwind Segue not working in iOS 8,但不知道我是否遗漏了任何内容。

修改 将println语句添加到unwind方法但没有打印,因此该方法不是调用。 VC2的头文件代码:

#ifndef SettingsViewController_h
#define SettingsViewController_h

#endif

@interface SettingsViewController (Workaround)
- (IBAction)unwindToSettings: (UIStoryboardSegue *)segue;
@end

VC2的快速代码部分

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

2 个答案:

答案 0 :(得分:0)

我的放松细分工作得很好。从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”。

答案 1 :(得分:0)

我创建了一个具有相同结构的虚拟项目:Tab Bar Controller后跟导航控制器,它不起作用,所以我怀疑它与Tab Bar Controller和控制器的结构有关。

最终使用Present Modally segue和

dismissViewControllerAnimated(true, completion: nil)