gpt4 book ai didi

ios - 如何在 UIScrollView 中加载 UIViewController

转载 作者:搜寻专家 更新时间:2023-10-31 08:20:01 24 4
gpt4 key购买 nike

这是我的设置。我在主视图 Controller 顶部有一个 UIScrollView,我在其中加载了多个 View Controller 。我还有一个添加按钮,它将使用 Push segue 显示一个新的 View Controller 。

我希望这个 View Controller 也只加载到 ScrollView 的顶部,而不是所有屏幕。
到目前为止,我尝试了两种不同的方法,但都没有效果:

  1. prepareForSegue 中的 ScrollView 中添加 View Controller :

      override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let addViewController = segue.destination as! AddViewController

    addChildViewController(addViewController)
    addViewController.view.frame = CGRect(x: 0, y: 0, width: width, height: height)
    scrollView.addSubview(addViewController.view)
    didMove(toParentViewController: self)
    }
  2. 在 UIButton 操作中添加 View Controller :

@IBAction func addDidTouch(_ sender: AnyObject) {

    let addViewController = AddViewController()

addChildViewController(addViewController)
addViewController.view.frame = CGRect(x: 0, y: 0, width: width, height: height)
scrollView.addSubview(addViewController.view)
didMove(toParentViewController: self)
}

这两种解决方案都会让我的应用崩溃。
有没有办法正确实现?

最佳答案

你不能在同一个 View Controller 上推送任何 View Controller ,你需要将容器 View 添加到你的 ScrollView 。然后,如果你愿意,你可以在点击添加按钮时滚动滚动条,这样看起来就像是添加了新的 Controller 。可以这样做,

scrollView.contentSize = CGSize(width: screenWidth*3, height: 1)

let first = getStoryboard(StoryboardName.Main).instantiateViewControllerWithIdentifier("FirstViewController") as! FirstViewController

let second = getStoryboard(StoryboardName.Main).instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController

let third = getStoryboard(StoryboardName.Main).instantiateViewControllerWithIdentifier("ThirdViewController") as! ThirdViewController

self.addChildViewController(first)
self.scrollView.addSubview(first.view)
first.willMoveToParentViewController(self)

self.addChildViewController(second)
self.scrollView.addSubview(second.view)
second.willMoveToParentViewController(self)

self.addChildViewController(third)
self.scrollView.addSubview(third.view)
third.willMoveToParentViewController(self)

first.view.frame.origin = CGPointZero
second.view.frame.origin = CGPoint(x: screenWidth, y: 0)
third.view.frame.origin = CGPoint(x: 2*screenWidth, y: 0)

如果您只想通过添加按钮添加(移动)到另一个 View Controller ,您可能希望禁用 ScrollView 的滚动。

关于ios - 如何在 UIScrollView 中加载 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39936110/

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