草庐IT

objective-c - 在 iOS 中设置 UICollectionView

coder 2023-07-29 原文

我一直在寻找为 iOS 应用程序设置 UICollectionView 的方法。 Google 只找到了一些博客,其中包含关于什么它是什么的帖子,而不是如何它是如何工作的。当然,Apple 文档很有帮助,但没有提供我希望能够设置 UICollectionView 的信息。

如何设置一个 UICollectionView

最佳答案

uicollectionview类几乎与 uitableview 相同类(class)。它们共享许多相同的方法和功能。如果方法/功能不同,大多数时候只是将“行”换成“单元格”,反之亦然。然而,有一些方法在 UICollectionView 上不存在,而在 UITableView 上却存在。不过,首先,我将解释如何设置 UICollectionView:

  1. 首先将您的 UICollectionView 添加到当前的 ViewController,或创建一个新的 UICollectionViewController。 View 和 Controller 的步骤没有太大区别。
  2. 如果您使用的是 View 而不是 ViewController,请确保 CollectionView 的 DelegateDataSource 是它所在的 View Controller 。还要确保将 Delegate 和 DataSource 添加到头文件中:<UICollectionViewDataSource, UICollectionViewDelegate>

  3. 接下来,确保在 View Controller 的类中包含这三个方法:

    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
    
    -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    
    -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    
  4. 这些是唯一需要的方法。第一个告诉 Collection View 它应该有的部分的数量。这应该返回一个整数值。第二种方法获取每个部分中的单元格数。同样,这应该返回一个整数值。最后一个方法使用给定的数据(通常来自 NSArray)填充每个单元格。最后一个方法应该返回一个 CollectionViewCell。如果您在此方法上设置断点,您会注意到它会为 numberOfItemsInSection 中定义的每个单元格调用一次。方法。

UICollectionViews 提供高级动画方法并允许取消选择和选择单元格(类似于处于“编辑”模式时的 Pages 等应用程序)。然而,据我所知,UICollectionViews 不提供诸如“滑动删除”或披露指示器之类的功能。

UICollectionViews 还允许您使用 xib 创建自定义单元格(AKA nib) 文件,这允许一些非常高级的外观和独特的界面,而无需大量复杂的代码。

遗憾的是,UICollectionView 仅在 iOS 6 及更高版本中受支持。有一些项目可用,例如 PSTCollectionView它在 iOS 4.3+ 中增加了对 CollectionViews 的支持,但我还没有弄清楚如何使用它们。在我的例子中,当加载 View 时,我只是检查 UICollectionView 类是否可用,如果不可用,则加载一个表。

这里是 Apple 官方文档的链接 Collection Views .您可能还想查看此 tutorial .

关于objective-c - 在 iOS 中设置 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12654281/

有关objective-c - 在 iOS 中设置 UICollectionView的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  3. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  4. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  5. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  6. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  7. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  8. objective-c - 在设置 Cocoa Pods 和安装 Ruby 更新时出错 - 2

    我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U

  9. ruby-on-rails - environment.rb 中设置的常量在开发模式中消失 - 2

    了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl

  10. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

随机推荐