【问题标题】:unwind doesn't work放松不起作用
【发布时间】:2014-12-31 08:34:09
【问题描述】:

iOS 8.1

xCode 6.1.1

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

从 VC2 到 NC3 是 Show details segue。我在 VC3 中有一个取消按钮,它应该可以展开到 NC2/VC2。

我已经在 NC2 和 VC2 的 Custom Class 的 header 和 swift 文件中添加了 unwind 方法,并且 Ctrl+从 Cancel 按钮拖动到 VC3 exit。

我也试过 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的swift代码部分

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

【问题讨论】:

  • 你能添加你在 VC2 中的 unwind func 代码吗?

标签: ios xcode swift viewcontroller navigationcontroller


【解决方案1】:

我的 unwind segues 工作得很好。从 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 中的 Cancel 按钮按住 Control 并拖动到情节提要中 VC3 上方的 Exit 图标,然后选择“didFinishWithVC3”。

【讨论】:

  • 是的,做了这一切,但什么也没发生 :(
【解决方案2】:

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

最终使用 Present Modally segue 和

dismissViewControllerAnimated(true, completion: nil)

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    相关资源
    最近更新 更多