gpt4 book ai didi

xcode - 无法将 View Controller 的框架添加到另一个 View Controller 中的 ScrollView

转载 作者:行者123 更新时间:2023-11-30 10:02:19 24 4
gpt4 key购买 nike

我想向我的应用程序添加滑动功能,并在 View Controller 之间滑动,如本教程所示:https://www.youtube.com/watch?v=3jAlg5BnYUU本教程的源代码在这里:https://www.veasoftware.com/posts/swipe-navigation-in-swift-xcode-7-ios-9-tutorial

在该指南中,他们使用 nib/xib 文件,这些文件与相应的 View Controller 一起创建,然后在 ViewController 的构造函数中调用这些文件。

我做了完全相同的事情,并且与教程中的一样有效。但我还想使用没有 xib 文件的 ViewController,因为它位于我的 Storyboard上。在我下面的代码中,该 View Controller 称为 ViewController2,它是我滑动时唯一不会出现在 ScrollView 中的 View Controller 。另外两个这样做是因为我在构造函数调用中调用了 xibName,但 ViewController2 没有 xib 文件,因为它位于我的 Storyboard上。

那么如何将它添加到 ScrollView 中,以便在我滑动时它会出现?

@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);
}

最佳答案

尝试执行以下操作:

1) 以编程方式获取 Storyboard对象。

2) 为 Storyboard文件中的 View Controller 2 提供 Storyboard ID。您可以通过转到 Main.storyboard 文件并选择您想要提供标识符的 View Controller ,然后查看身份检查器(它应该位于“身份”部分下。enter image description here

3) 使用 Storyboard方法 instantiateViewControllerWithIdentifier 实例化 View Controller 2 的实例。此方法使用 Storyboard ID 作为参数,并将其添加为 ScrollView 的 subview 。

像这样:

@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);
}

希望这有帮助!欢迎提问!

关于xcode - 无法将 View Controller 的框架添加到另一个 View Controller 中的 ScrollView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com