如何在 UIScrollView 中加载 UIViewController

2023-12-14

这是我的设置。我有一个UIScrollView在我的主视图控制器之上,我在其中加载多个视图控制器。我还有一个“添加”按钮,它将使用 Push segue 呈现一个新的视图控制器。

我希望这个视图控制器也只加载在滚动视图的顶部,而不是整个屏幕。
到目前为止,我尝试了两种不同的方法,但都不起作用:

  1. 在滚动视图中添加视图控制器prepareForSegue:

      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 操作中添加视图控制器:

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

这两个解决方案都会使我的应用程序崩溃。
有没有办法正确地实现这一点?


您不能在同一个视图控制器上推送任何视图控制器,您需要将容器视图添加到滚动视图中。然后,如果您愿意,您可以点击添加按钮滚动滚动条,这样看起来就像正在向其中添加新控制器。可以这样做,

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)

如果您只想通过添加按钮添加(移动)到另一个视图控制器,您可能需要禁用滚动视图的滚动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 UIScrollView 中加载 UIViewController 的相关文章

  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • 在 Swift 中将 Int 转换为 UInt32

    我正在制作一个 Tcp 客户端 因此使用CFStreamCreatePairWithSocketToHost它期望第二个参数为 UInt32 这是我正在尝试做的事情的示例 func initNetwork IP String Port In
  • 应用程序图标未刷新

    我更改了新版本应用程序中的图标图像 并且我在设备中安装了旧版本应用程序 然后我安装了新版本 它在 iOS 5 中运行良好 但在 iOS 6 中 图标没有刷新 它仍然显示旧版本图标 徽标 如果没有安装旧版本应用程序 该设备在 iOS 5 和
  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协
  • 从 Plist 中存储和检索 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 在 plist 文件中存储两个 NSMutableArray https stackoverflow com questions 6070568 ios store two nsmutable
  • 自动调整大小完成后如何获取帧大小

    我想知道 如何以及何时 viewDidLoad viewWillAppear viewDidAppear 可以获得自动调整大小以适合其父视图的 UIViews 框架大小 从你的问题中不清楚你为什么想要它 但我想这是为了布局你的子视图 幸运的
  • 在界面生成器/故事板中设置 UIButton 图像

    我有一个视图控制器 我在故事板中添加了一个圆形矩形按钮 该应用程序运行良好 我还使用故事板将按钮连接到 segue 我正在尝试为此按钮设置一个自定义图像以用于其开和关状态 我如何访问此按钮并设置其属性 在本例中为开和关图像 这是一个屏幕截图
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • 使用 UIActionSheet 更改视图时工具栏项目消失

    当从 a 启动视图时UIActionSheet按钮 通过导航栏后退按钮返回视图后 工具栏虽然仍然可见 但上面没有任何以前的按钮 自从更新到 iOS 6 以来 这个错误就出现了 并且是在模拟器和仅运行 iOS 6 的设备上测试时发生的 如果我
  • 如何在 RestKit 中为同一类提供两条发布路线

    由于我无法弄清楚如何为同一个类设置两个不同的 POST 资源路径 因此我尝试手动创建 RKObjectLoader 请求 但它似乎不断发送 GET 请求而不是 POST 即使我已将方法设置为邮政 这是我的代码 User user User
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • iOS 中的等宽字体是什么?

    我想要在我的 iOS 应用程序中为 UILabel 使用等宽字体 不幸的是 我找不到一个 甚至 美国打字机 实际上也不是等宽的 XCode 中可用的等宽字体是什么 iOS 等宽字体 Courier Courier Bold Courier
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • 在WKWebview中设置useragent

    如何在 WKWebView 中设置自定义用户代理字符串 我正在尝试嵌入我的应用程序的版本 以便我的服务器端可以看到可用的功能 我找到了以下方法 let userAgent MyApp 1 33 7 request setValue user
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • UIImage:如何获取网站选项卡图标

    我正在开发一个 RSS 阅读器 我需要获取每个提要的图标 例如 如果我的提要是 google com 我想获取 G 图标并将其放入 UIImage 或其他内容中 关于如何实现这一目标有什么想法吗 最简单的方法是使用 Google NSStr
  • 应用未能及时恢复

    我在一个非常具体的场景中遇到 未能及时恢复 崩溃 我认为与看门狗相关 仅在从后台恢复时 并且仅在进入后台后在很短的时间内执行此操作 a最多几秒钟 这似乎是相关的崩溃日志 Incident Identifier E30F2238 5B15 4
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f

随机推荐

  • Java:使用 Fibonacci 堆实现 Dijkstra 算法

    新来的 但已经作为客人潜伏了一段时间了 好的 所以我一直在尝试使用 Fibonacci 堆 在 Java 中 执行 Dijkstra 的最短路径算法 经过一番搜索 我偶然发现了两个代表斐波那契堆的现成实现 第一个实现做得相当漂亮 可以找到h
  • Django 单元测试;使用 python-social-auth 登录

    我想为我正在使用的 Django 应用程序编写单元测试python 社交 身份验证 运行 Django 并使用浏览器时一切都很好 感谢 python social auth 但是 我似乎无法编写单元测试 因为我无法创建经过身份验证的客户端来
  • 为什么#include 之后仍然需要使用 std::string ? [复制]

    这个问题在这里已经有答案了 为了使用字符串 我需要包含字符串标头 以便其实现可用 但如果是这样 为什么我还需要添加这一行using std string 为什么它还不知道字符串数据类型 include
  • git clone 的 Python 进度条

    我使用 GitPython 在我的程序中克隆一个存储库 我想出了如何使用 clone from 命令显示克隆的状态 但我希望状态看起来更像 tqdm 进度条 我尝试使用 requests 库来获取文件的大小 但我仍然不确定如何实现它 尝试做
  • Nodemailer和Godaddy,我已经尝试了所有解决方案都无济于事

    我通过 GoDaddy 购买了一个域名和一个电子邮件地址 并捆绑了 Office 365 Basic 几天来 我尝试从我的节点应用程序中使用 nodemailer 发送一封电子邮件 但从未成功 因为我总是收到535 Authenticati
  • 使用 twinx 时旋转 xtick 标签时出现问题

    我的 X 轴旋转有问题 我尝试旋转输出图而没有错误 但我没有结果 Import Data df pd read csv https github com selva86 datasets raw master economics csv x
  • 使用 angularJS 时未捕获的错误:[$injector:modulerr]

    我在我的应用程序中使用 angularJS 但是当我添加路由配置部分时 我收到此错误 Uncaught Error injector modulerr http errors angularjs org 1 2 9 injector mod
  • 如何限制用户使用datetimepicker输入数据并禁用手动用户输入?

    我想限制用户只能使用日期时间选择器输入数据 下面是我正在使用的代码 div class form group div
  • 查看函数列表时出现呼叫提示/文档字符串?

    我最近刚刚转用 Komodo 进行 Python 编程 到目前为止我很喜欢它 我喜欢输入函数名称 然后输入开括号 它会打开调用提示 文档字符串 我也喜欢输入模块名称 然后输入 它会打开可用函数的列表 我的问题是 当我列出函数列表时 是否可以
  • 使用批处理文件复制目录路径中带有通配符的文件?

    我想要一个批处理文件将文件从每月更改的文件夹复制到另一个文件夹 但 Windows 命令提示符似乎不喜欢通配符 Example 我想复制文件夹media1并包含此目录中的文件 K Eng NAVDB Navigation Databases
  • 使用 Git 进行代码升级

    我试图弄清楚如何将 git 用于多个环境 开发 gt 测试 gt 产品 并进行代码升级 我读了一些有关分支的内容 但不太明白这如何解决我的问题 因为我必须有能力同时且彼此独立地运行所有环境 将非常感谢某种操作方法 这种三层工作流程似乎是很常
  • join 命令遗漏了一行数字

    我有两个文件 我想取出第三列中具有共同数据的行 但它遗漏了一行应该匹配的行 File1 b b b 4 5 3 c c c File2 1 2 3 4 a b c d e f g h i j k l l m n o 输出是 c c c a
  • Silverlight 图表 - 饼图显示图表上的依赖值

    我想在饼图本身上显示相关值 不在图例区域中 我正在使用 Silverlight 4 Silverlight 4 Toolkit 2010 年 4 月 这应该是一个很常见的请求 但我还没有找到解决方案 我该怎么做
  • Angular 4 中的 HashLocationStrategy 和查询参数

    我正在将现有的 Angular 4 应用程序从 PathLocationStrategy 迁移到HashLocationStrategy并且需要保持入口点 url 正常工作 它看起来像www test com param1 123 问题是
  • 我可以只用 CSS 创建这个形状吗?

    我正在为具有特定形状的网页构建一个英雄部分 目前我只是使用图像作为实际部分背景的叠加层 但我希望减少我发出的请求数量 并且会想知道是否可以使用 CSS 完成以下形状 所以黑色部分是实际图像所在的位置 而白色部分是我尝试使用 CSS 构建的部
  • C# 用阴影给图像着色

    我目前正在使用 C 创建一款游戏 并尝试为玩家创建服装 我想做布料设计并让玩家选择颜色 我从 TibiaME tibiame com 的游戏文件中拍摄了照片 它几乎满足了我的要求 我怎样才能用颜色填写这个表格 当我尝试替换某种颜色时 它不起
  • 无法将字符串分配给 Swift 函数内的数组元素

    下面代码中的两个赋值行都给出了这个错误 value T5 与 String 不同 func PrintShoppingList myList Array
  • SQL Server,检查 varchar 是否包含全零

    我需要编写一个函数来检查 varchar 变量值是否全为零 由于变量是 varchar 而不是 int 我有点迷失了 你会怎么办 多谢 您可以使用双重否定LIKE test variable NOT LIKE 0 这表示变量isn t由一定
  • 在同一个 goroutine 中创建的 goroutine 总是按顺序执行吗?

    package main func main c make chan int for i 0 i lt 100 i i i go func c lt i for b lt c println b if b 100 break 上面
  • 如何在 UIScrollView 中加载 UIViewController

    这是我的设置 我有一个UIScrollView在我的主视图控制器之上 我在其中加载多个视图控制器 我还有一个 添加 按钮 它将使用 Push segue 呈现一个新的视图控制器 我希望这个视图控制器也只加载在滚动视图的顶部 而不是整个屏幕