SWIFT 3:使用导航控制器进行 Segue

SWIFT 3: Segue with navigation controller

我正在尝试将一些值从一个 viewcontroller 发送到另一个。 (全部嵌入在 NavigationController 中)。我可以用法线 viewcontrollers 进行 segue,所以总的来说我理解 segue 的想法。我必须以两种不同的方式做到这一点,但遇到了两个不同的问题。

第一种方式,segue 做对了,但是"two times"。我的意思是在 segue(我想要的)之后,同一个控制器有另一个 segue,但没有导航控制器,也没有我要发送的数据。最后 viewcontroller 上的 "back" 按钮返回到 AlmostViewController。

代码如下:

第二种方式,什么都没发生,

ErorCould not cast value of type 'RevisionApp.AlmostViewController' (0x1055d58c0) to 'UINavigationController' (0x107669f18).

代码如下:

对于第一个问题,当使用嵌入导航控制器时,您不必在点击按钮时创建动作函数。导航控制器为你做。所以你需要做的事情:

  1. 使用故事板将函数 btnTapped 与按钮断开连接。
  2. 删除或注释函数btnTapped(你不需要它)。

问题出在第 18 行。您正在尝试将 AlmostViewController 转换为 UINavigationController。直接这样访问,

let detailController = segue.destination as! AlmostViewController

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

让 nextViewController = storyBoard.instantiateViewControllerWithIdentifier("ViewController2") 作为 NextViewController self.presentViewController(nextViewController, animated:true, completion:nil)