1
我有UIScrollView其中包含许多以下订阅视图控制器。每个订阅视图控制器包含容器视图控制器。4个视图控制器之间的简单定制导航
目标是做4个浏览控制器之间一个简单的导航在右侧。
导航逻辑:
- 在viewDidLoad中第一或第二视图控制器显示集装箱
- 当用户按下上- 视图 - 控制器按钮示出了第三视图控制器在集装箱
我试图使用Segges但这没有奏效。实例化VC的方式为 订阅视图控制器不是个好主意。
我有UIScrollView其中包含许多以下订阅视图控制器。每个订阅视图控制器包含容器视图控制器。4个视图控制器之间的简单定制导航
目标是做4个浏览控制器之间一个简单的导航在右侧。
导航逻辑:
我试图使用Segges但这没有奏效。实例化VC的方式为 订阅视图控制器不是个好主意。
,我发现最简单的方法是创建自定义的Segue公司。
创建自定义UIStoryboardSegue
import UIKit
class NewSegue: UIStoryboardSegue {
//Call when performSegueWithIdentifier() called
override func perform() {
//ViewController segue FROM
var sourceViewController: UIViewController = self.sourceViewController as! UIViewController
//ViewController segue TO
var destinationViewController: UIViewController = self.destinationViewController as! UIViewController
//Parent ViewController - ContainerViewController
var containerViewController: UIViewController = sourceViewController.parentViewController!
//Setting destinationViewController
containerViewController.addChildViewController(destinationViewController)
destinationViewController.view.frame = sourceViewController.view.frame
sourceViewController.willMoveToParentViewController(nil)
//Do animation
containerViewController.transitionFromViewController(sourceViewController,
toViewController: destinationViewController,
duration: 0.3,
options: UIViewAnimationOptions.TransitionCrossDissolve,
animations: nil, completion: { finished in
//Delete sourceViewController
sourceViewController.removeFromParentViewController()
//Show destinationViewController
destinationViewController.didMoveToParentViewController(containerViewController)
})
}
}
3.Click和配置它们
performSegueWithIdentifier("SugueID", sender: self)
在ContainerViewController或其他的ViewController使用此代码来切换容器视图模式...
@IBOutlet weak var container: UIView!
var currentViewController:UIViewController?
//put the view did load method here.
@IBAction func buttonPressed() {
//the storyboard file that the view is in.
let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
// the container view you want to switch to.
self.currentViewController = storyboard.instantiateViewControllerWithIdentifier("containerViewStoryboardID") as? UIViewController
//switch the container view.
self.addChildViewController(self.currentViewController!)
self.container.addSubview(self.currentViewController!.view)
self.currentViewController!.didMoveToParentViewController(self)
}
嗯,这是一个坏主意,因为我需要删除子视图,我会从其他VC切换出现问题。 – AndersonDev
我已经使用了很多次,效果很好。你还在寻找什么其他解决方案?你只是想切换整个VC? –
是的,我需要将整个VC切换到其他。然而,下一个VC应该能够将自己切换到其他VC。不要忘记数据交换 – AndersonDev