【发布时间】:2016-10-31 20:23:32
【问题描述】:
我正在尝试使用this 框架,该框架提供了一个类似于 Tinder (Swift 3) 的导航栏。
我的目标是以透明的方式使用它 - 意思是 - 嵌入它并在情节提要上拥有 3 个独立的视图控制器,以及它们的 VC.swift 文件并使用 segues。
Here 是一个工作测试项目,具有 Tinder 风格和 Storyboard 中的 3 个 ViewController。
在我的项目中使用它之前,我想对其进行测试,所以我更新了这个项目。
正如我所见,nav 是具有 3 个 VC 并在它们之间切换的 UINavigationController。我想在故事板上看到他。
如此安装:
var nav: UINavigationController?
我在 UI builder 和 UINavigationController 类上创建了一个 UINavigationController,名为 MainNavigationController。
var nav: MainNavigationController?
nav = mainStb.instantiateViewController(withIdentifier: "mainNavigationController") as? MainNavigationController
我还向情节提要添加了一个简单的初始视图控制器,我从这个 VC(使用按钮)到 MainNavigationController:
@IBAction func buttonSegue(_ sender: Any) {
setNav()
self.performSegue(withIdentifier: "segue", sender: nil)
}
func setNav() {
//// implement my logic (if logged in go to... if not go to...)
instantiateControllers()
setItems()
let items = [UIImageView(image: chat),
UIImageView(image: gear),
UIImageView(image: profile)]
let controllers = [oneVC!,
twoVC!,
threeVC!] as [UIViewController]
controller = SLPagingViewSwift(items: items, controllers: controllers, showPageControl: false)
setupController()
nav = MainNavigationController(rootViewController: controller)
appDelegate.window?.rootViewController = nav
appDelegate.window?.makeKeyAndVisible()
}
到目前为止一切正常。 但是:
我目前唯一的问题是我无法控制转场。在我添加的 3 个视图控制器中
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
但它从来没有达到这个方法。我需要它在视图控制器之间传递数据。怎么办?
此外,您将如何通过点击一个元素(如按钮)来实现从一个视图控制器到另一个视图控制器的转场?如果我使用按钮设置一个常规的 segue,从一个 VC 到另一个 - 它显示没有导航栏的目标 VC
我上传了我当前的实现here。
任何帮助都会得到帮助。 谢谢。
【问题讨论】:
-
* 感谢 @DavidSeek 提供了 SLPagingView swift 3 版本中的代码以及带有 VC 的示例项目。
-
按钮方法中的
performSegueWithIdentifier对您没有任何作用,因为您已经替换了setNav中的根视图控制器,并且您的视图现在位于情节提要环境“外部”