展开segue不起作用

时间:2016-06-27 14:10:18

标签: ios xcode swift

我正在使用相同的视图,使用TableViewController与添加/编辑项目系统的应用程序。 (但是当你添加一个项目时,视图是模态显示的,当你编辑它时会显示)

我跟着Apple的伟大starter tutorial,所以基本上我的故事板看起来像这样

storyboard

通过导航控制器的segue用于添加,另一个用于编辑。 (我根据教程做了一切)。

我在取消项目栏按钮和ViewController的退出图标之间做了一个segue,当模态显示视图时(当我尝试添加项目时)它运行良好。

然而,当我点击一个单元格来显示带有显示它的segue的视图(编辑项目)时,导航栏中的两个项目都停止工作。不再调用prepareForSegue方法。所以我无法取消或保存。

我尝试在ViewController本身和退出图标之间创建一个展开segue并以编程方式调用它:

@IBAction func testButton(sender: UIBarButtonItem) {
    print("we're inside")
    self.performSegueWithIdentifier("cancelSegue", sender: self)
    print("so what now")
}

当我尝试编辑它并点击取消按钮时,只显示两条日志消息并跳过performSegueWithIdentifier方法。但是添加仍然可以正常工作。

我做错了什么或者我误解了关于放松细分的一些基本概念?

1 个答案:

答案 0 :(得分:1)

这对您的问题来说似乎是一个奇怪的解决方案。虽然我无法评论为什么你的unwind segue在第二种情况下没有工作,但是因为你要显示它{2}而忽略New Program segue会变得非常复杂不同的方式。

我们使用的常用方法是:

  1. 使用两个完全不同的视图控制器来创建和更新资产。可能是一些重复的代码,但让其他人更容易处理。
  2. 使用相同的视图控制器创建和更新按钮。如果您正在编辑某个项目,则可以使用prepareForSegue将其传递给视图控制器。加载视图控制器时,如果存在某个项目,则可以更改按钮的行为,标题等。如果没有项目,则表示您要创建新项目。
  3. 对于大多数实现来说,以编程方式忽略视图要简单得多。 (即[self dismissViewControllerAnimated:NO completion:nil]用于模态视图,[self.navigationController popViewControllerAnimated:YES]用于返回同一导航控制器堆栈中的vc。
  4. <强>更新

    您是否将取消按钮链接到第一个视图控制器或第二个视图控制器(带有取消和保存按钮的控制器)上的退出图标?