使用 Interface Builder 在 nib 中设计 UICollectionView 单元格(无故事板)

2024-04-08

我正在尝试设计一个定制的UICollectionViewCell原型(在 Xcode 5.0.2 中),但是 Interface Builder 不允许我向我的UICollectionView在设计笔尖时。如果我使用故事板,我可以设置项目(单元格)的数量,并且 Interface Builder 可以完美地创建和显示单元格,但我无法将单元格添加到笔尖中的集合视图中。我试过了:

  • 手动将集合视图单元格从对象库拖放到集合视图中。 (失败:不允许我将单元格放置在我视图中的任何位置)
  • 使用故事板中的单元格创建我的集合视图,并将整个视图复制粘贴到笔尖中。 (失败:集合视图被复制但单元格消失了)
  • 使用故事板中的单元格创建我的集合视图,将故事板作为源代码打开,查找我的集合视图单元格,复制相关的 XML,将我的笔尖作为源代码打开,将其粘贴到 XML 中的集合视图中。 (失败:无法在 Interface Builder 中打开笔尖,它会出现错误。当我从源代码中删除单元格时,它会再次打开。not如果您不知道自己在做什么,请尝试此操作。)

我还看到了关于同一问题的几个问题:

  • 是否可以在没有故事板的情况下在 Interface Builder 中创建原型单元? https://stackoverflow.com/questions/8100247/is-it-possible-to-create-prototype-cells-in-interface-builder-without-story-boar
  • UICollectionView 中的自定义标头,带有 Interface Builder,无需 Storyboard https://stackoverflow.com/questions/19002793/custom-header-in-uicollectionview-with-interface-builder-without-storyboard
  • 在笔尖而不是故事板中制作单元原型 https://stackoverflow.com/questions/8574188/prototype-cells-in-a-nib-instead-of-a-storyboard

他们都指出以编程方式执行这些操作和/或为单元使用另一个笔尖。我知道怎么做,但是有什么方法可以在集合视图内设计集合视图单元格在同一视图内在笔尖中,就像在故事板中一样?为什么 Interface Builder 不让我在 nib 中这样做,它允许(甚至鼓励)完美地使用情节提要?


简单的答案是否定的,这是不可能的。将故事板视为 XIB 的集合。 XIB 只是定义特定视图的方面,以便可以在运行时构建它。

关于集合视图及其故事板实现,重要的是要了解故事板允许嵌套视图控制器并使用其 XIB 定义集合视图,因为这使故事板的基本范例保持一致。由于故事板是定义应用程序的“故事”或场景的方法,因此它允许声明在集合视图中使用的可重用视图是很自然的。

XIB 则不然,因为 XIB 背后的基本思想是可重用性。只要控制器向集合视图注册这些类,这将允许 XIB 中定义的集合视图具有与之一起使用的任何单元格。通过这种方式,您可以获得可重用性的好处,因为另一个控制器可以使用相同的 XIB 并注册不同的单元等。

因此,我认为允许在 XIB 内声明集合视图受支持的单元格会更加混乱,因为这打破了 XIB 所追求的单一职责原则(如果可以这样称呼的话)。

最好的解决方案是定义一个自定义集合视图子类,在实例化时注册相关单元格,然后在 XIB 中使用此类。

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

使用 Interface Builder 在 nib 中设计 UICollectionView 单元格(无故事板) 的相关文章

  • iPhone 拒绝了发布请求 未说明

    iPhone 拒绝了发布请求 内部启动错误 进程启动失败 未指定 这个错误让我抓狂 我似乎无法解决它 我从发现的所有地方都做了以下操作 刷新证书 注销并进入开发者苹果帐户 下载手动证书 删除 Apple 全球证书 重新启动 Mac 和 iP
  • 如何告诉 Xcode 我的 info.plist 和 .pch 文件在哪里

    我重命名了我的项目及其文件 现在 Xcode 仍在寻找旧的 info plist 文件 在哪里设置所需的 plist 和 pch 文件的位置 在我的 项目信息 窗口中 打包 下有一个 Info Plist 文件项 但它是空白的 当我尝试不同
  • Xcode -- 让force_load 使用相对路径

    某些库在链接到 Xcode 项目时需要 all load 链接器标志 但是 如果库之间存在符号冲突 这会导致链接器错误 解决方案是使用 force load 它可以有效地让您在某些库上使用 all load 但不能在其他库上使用 然而 这反
  • 在 Swift 中获取可见的 IndexPath UICollectionView

    如何获得visible IndexPath while scrolling in collectionView 我参考了很多link1 https stackoverflow com questions 30281451 iterate o
  • 加速度计和校准 - iPhone SDK

    我需要在 iPhone 游戏中使用加速计的功能 我只需通过倾斜设备来移动图像即可 然而 YouTube 上的大多数视频仅显示以某种方式反转的倾斜功能 而忘记包含校准 我希望用户将他们的设备校准到他们所处的任何位置 有谁知道我应该如何开始 我
  • 如何设置 Xcode 来代替 Qt Creator 工作?

    我不使用 Qt Creator 的 UI 设计功能 对于一个新项目 我想体验一下使用 Xcode 的工作 这将是一个常规的 Qt 项目 使用 C 和 Qt 库开发 就像在 Qt Creator 中一样 我没有使用 OS X 尤其是 Xcod
  • 'NSDate' 没有可见的 @interface 声明选择器 'initWithString:' [重复]

    这个问题在这里已经有答案了 可能的重复 NSDate initWithString https stackoverflow com questions 7770257 nsdate initwithstring 我写了下面一行代码 NSDa
  • UIWebView 中横向模式的 Youtube 视频

    我的申请不是为了风景而做的 但是当我打开我的 YouTube 频道时UIWeb视图和一个用户发布视频 它出现在肖像中 我想让它在用户旋转 iPhone 时以横向模式显示 How to 启用横向模式如本例所示 我知道有一些 肮脏的黑客 可以做
  • iOS Flutter 与 Firebase:启动时 FlutterAppDelegate 中出现白屏和 SIGABRT

    现在在多个项目中 非常不一致的是 我在启动应用程序时出现白屏 并且 Xcode 显示错误 Thread 1 signal SIGABRT 在线上 objc class AppDelegate FlutterAppDelegate 这些都是i
  • Xcode 4 上的 Boost 库静态链接

    我在 OS X 上使用 Xcode 使用 Boost 库 Boost 使用 macports 安装在我的系统上 通过将我需要的 3 个 boost 库 例如 libboost thread mt a 添加到 Targets Link Bin
  • Xcode 9 - Alamofire Pod。命令 /bin/sh 失败,退出代码为 1

    Users Alex Library Developer Xcode DerivedData MyProject ehabmnclpzlywhabrefntacibonm Build Intermediates noindex Archiv
  • 如何在iPhone模拟器中更改时间和时区?

    如何更改时间和时区iPhone http en wikipedia org wiki IPhone模拟器 我猜它使用您的系统时区 因此更改系统偏好设置中的 TZ 可能会成功
  • 在 RealityKit 中更改对象的枢轴点

    我希望立方体仅在 z 轴正方向上缩放 现在 当我缩放它时 它总是围绕其中心缩放 因此 为此我必须更改对象的锚点 我知道在 SceneKit 中有一个可以使用的枢轴属性 在 RealityKit 中也有办法做到这一点吗 我发现了一个相当简单的
  • Xcode:一步完成清理和构建

    在 Xcode 中 您可以从 产品 菜单执行 清理 您还可以进行构建 也可以从产品菜单中进行 但是 你能将两者结合起来吗 即是否可以一步完成 清理 然后 构建 None
  • Swift 2.0 中的协议扩展方法调度

    我面临有关协议方法调度的问题 我有一个类层次结构 如下所示 protocol E func test extension E func test print jello class A E class B A func test print
  • 通过 cocoa pods 创建的 .xcworkspace 中的 .xcodeproj 文件被禁用

    我浏览互联网没有找到答案 所以这就是问题所在 我有一个项目 我在其中使用了 cocoa pods 因此通过 cocoa pods 为我创建的工作区文件打开它 但是在将我的操作系统 全新安装 更新到 MacOS Sierra 后 当我在 xc
  • 枚举 NSString 的最佳方法

    我正在寻找枚举 objc 对象 例如 NSString 的方法 我记得 Xcode4 版本中有一个新功能 它提供了一种新的 enum 方法 但不清楚 有人知道吗 好吧 我自己回答 我想我犯了一个错误 这就是我上面提到的新功能 typedef
  • Xcode 中定义的宏 CURRENT_PROJECT_VERSION 在哪里?

    这个帖子如何在 xcode 8 中设置 CURRENT PROJECT VERSION https stackoverflow com questions 39673280 how to set current project versio
  • iOS:如何在 UITabBarItem 中添加下划线

    我正在使用一个应用程序 我需要在其中添加下划线UITabbarItem 所以我想在所选下添加下划线UITabbarItem在默认情况下UITabbarcontroller of iOS 我已经创建了子类UITabbarcontroller但
  • 如何支持滑动删除具有组合布局的 UICollectionView 列表中的行?

    以前对于表视图 这是在UITableViewDataSource委托回调tableView commit forRowAt 相关 API 中是否有等效功能新的集合视图 https developer apple com documentat

随机推荐