将 segue 添加到动态创建的单元格
Add segue to dynamically created cells
我正在动态创建 9 个适合 UICollectionView
的单元格。点击时,每个按钮将加载不同的视图控制器。由于单元格是由数组中的数据生成的,因此我无法在 Interface Builder 中设置 segue
和 identifier
。
我一直在使用这种方法:self.navigationController?.pushViewController(vc, animated: true)
,但我认为这不是转换到不同视图控制器的最新方法。
问题:
- 我是否应该以编程方式为每个动态单元格创建一个 segue,如果是的话:
怎么样?
- 我是否应该将界面构建器中的一个按钮连接到虚拟视图控制器并在 segue 开始之前切换目标视图控制器,如果是这样的话:我将如何切换目标视图控制器?
Interface Builder 设置屏幕截图:
您应该在 Interface Builder 中设置 segues,但不是从按钮而是从视图控制器设置,并设置适当的标识符。
使用此方法启动 segue:
- performSegueWithIdentifier:sender:
我不会在这种情况下使用 segues。我会给每个不同的视图控制器一个故事板 ID,然后以这种方式加载它们。然后您可以通过该 ID 加载特定的视图控制器并以这种方式进行转换。
我对你的代码做了一些假设,所以我可以举个例子。我将假设每个单元格中都有一个按钮,这就是按下以触发 segue 的按钮。我还将假设这些单元格的每个按钮都将初始视图控制器作为目标,并使用如下代码中的方法声明。
func buttonPressed(cell: UICollectionViewCell) {
let viewController = self.storyboard!.instantiateViewControllerWithIdentifier("storyboardID") as! UIViewController
self.navigationController!.showViewController(viewController, sender: self)
}
我正在动态创建 9 个适合 UICollectionView
的单元格。点击时,每个按钮将加载不同的视图控制器。由于单元格是由数组中的数据生成的,因此我无法在 Interface Builder 中设置 segue
和 identifier
。
我一直在使用这种方法:self.navigationController?.pushViewController(vc, animated: true)
,但我认为这不是转换到不同视图控制器的最新方法。
问题:
- 我是否应该以编程方式为每个动态单元格创建一个 segue,如果是的话: 怎么样?
- 我是否应该将界面构建器中的一个按钮连接到虚拟视图控制器并在 segue 开始之前切换目标视图控制器,如果是这样的话:我将如何切换目标视图控制器?
Interface Builder 设置屏幕截图:
您应该在 Interface Builder 中设置 segues,但不是从按钮而是从视图控制器设置,并设置适当的标识符。 使用此方法启动 segue:
- performSegueWithIdentifier:sender:
我不会在这种情况下使用 segues。我会给每个不同的视图控制器一个故事板 ID,然后以这种方式加载它们。然后您可以通过该 ID 加载特定的视图控制器并以这种方式进行转换。
我对你的代码做了一些假设,所以我可以举个例子。我将假设每个单元格中都有一个按钮,这就是按下以触发 segue 的按钮。我还将假设这些单元格的每个按钮都将初始视图控制器作为目标,并使用如下代码中的方法声明。
func buttonPressed(cell: UICollectionViewCell) {
let viewController = self.storyboard!.instantiateViewControllerWithIdentifier("storyboardID") as! UIViewController
self.navigationController!.showViewController(viewController, sender: self)
}