我想在我的应用中添加一个滑动功能,并在viewcontrollers之间滑动,如本教程所示:https://www.youtube.com/watch?v=3jAlg5BnYUU 本教程的源代码位于:https://www.veasoftware.com/posts/swipe-navigation-in-swift-xcode-7-ios-9-tutorial
在该指南中,他们使用的nib/xib
文件与相应的视图控制器一起创建,然后用于在ViewController的构造函数中调用它们。
我做的完全一样,并且正如本教程中所做的那样。但我也想使用一个没有xib
文件的ViewController,因为它在我的故事板上。在我的代码中,该viewcontroller被称为ViewController2
,它是我滑动时唯一不会出现在scrollview中的。另外两个是因为我在构造函数调用中调用xibName
但ViewController2没有xib
文件,因为它在我的故事板上。
那么如何将它添加到滚动视图中,以便在我滑动时显示?
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
let vc0 = ViewController0(nibName: "ViewController0", bundle: nil)
self.addChildViewController(vc0)
self.scrollView.addSubview(vc0.view)
vc0.didMoveToParentViewController(self)
let vc1 = ViewController1(nibName: "ViewController1", bundle: nil)
var frame1 = vc1.view.frame
frame1.origin.x = self.view.frame.size.width
vc1.view.frame = frame1
self.addChildViewController(vc1)
self.scrollView.addSubview(vc1.view)
vc1.didMoveToParentViewController(self)
let vc2 = ViewController2()
var frame2 = vc2.view.frame
frame2.origin.x = self.view.frame.size.width
vc2.view.frame = frame2
self.addChildViewController(vc2)
self.scrollView.addSubview(vc2.view)
vc2.didMoveToParentViewController(self)
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height - 66);
}
答案 0 :(得分:1)
尝试执行以下操作:
1)以编程方式获取故事板对象。
2)为故事板文件中的View Controller 2提供故事板ID。您可以转到Main.storyboard文件并选择要提供标识符的视图控制器,然后查看Identity Inspector(它应位于“Identity”部分下面。
3)使用故事板方法instantiateViewControllerWithIdentifier
实例化View Controller 2的实例。此方法使用故事板ID作为参数,并将其添加为滚动视图的子项。
像这样:
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
//1
let mainStoryboard = UIStoryboard.init(name: "Main", bundle: NSBundle.mainBundle())
//3
let vc2 = mainStoryboard.instantiateViewControllerWithIdentifier("<InsertStoryBoardID>") as! ViewController2
self.addChildViewController(vc2)
self.scrollView.addSubview(vc2.view)
vc2.didMoveToParentViewController(self)
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height - 66);
}
希望这有帮助!随意提问!