首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将2D数组填充到CollectionView上?

将2D数组填充到CollectionView上可以通过以下步骤实现:

  1. 创建一个CollectionView对象,并设置其布局方式和其他属性。
  2. 实现CollectionView的数据源方法,包括numberOfSections(in:)、collectionView(:numberOfItemsInSection:)和collectionView(:cellForItemAt:)等方法。
  3. 在numberOfSections(in:)方法中返回2D数组的行数,即数组的count。
  4. 在collectionView(_:numberOfItemsInSection:)方法中返回2D数组中指定行的列数,即数组中每个子数组的count。
  5. 在collectionView(_:cellForItemAt:)方法中获取指定位置的数据,并将其填充到CollectionView的单元格中。
  6. 可以根据需要自定义单元格的样式和布局,以展示2D数组中的数据。

以下是一个示例代码,演示如何将2D数组填充到CollectionView上:

代码语言:txt
复制
import UIKit

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    var collectionView: UICollectionView!
    var data: [[Int]] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] // 示例2D数组数据
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建CollectionView并设置布局
        let layout = UICollectionViewFlowLayout()
        collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout)
        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
        view.addSubview(collectionView)
    }
    
    // 返回2D数组的行数
    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return data.count
    }
    
    // 返回指定行的列数
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return data[section].count
    }
    
    // 填充数据到单元格
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)
        let value = data[indexPath.section][indexPath.item]
        cell.backgroundColor = UIColor.gray
        cell.textLabel?.text = "\(value)"
        return cell
    }
    
    // 自定义单元格大小
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let width = collectionView.bounds.width / CGFloat(data[indexPath.section].count)
        return CGSize(width: width, height: width)
    }
}

这个示例代码中,我们创建了一个CollectionView,并将2D数组的数据填充到单元格中。你可以根据实际需求自定义单元格的样式和布局。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Objective-C MapKit的使用-LBS简单的租车主界面demo效果分析代码demo地址

车辆信息view:根据当前点击的大头针显示对应的车辆信息 车辆类型选择view:选择车辆类型 交互分析 选择车辆类型,地图上出现不同的大头针 车辆信息view可滑动,滑动完成后地图定位到当前车辆的大头针...参数的传递 模拟数据通过编写1.plist完成 读取plist数据,通过选择车辆类型,将筛选出来的数据使用模型数组存放,通过set方法传递给mapView和车辆信息view,并刷新界面 选择车辆信息...property(nonatomic,strong)id delegate; @property (nonatomic,strong)MKMapView *map; //大头针数组...@property (nonatomic,strong)NSMutableArray *annotationArray; //car数据模型数组 @property (nonatomic,strong...Privacy - Location Always Usage Description 值随便 //获取授权 - (void)getAuthorization { //获取授权状态 CLAuthorizationStatus

1.9K40
  • iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局

    interface MyLayout : UICollectionViewFlowLayout 为了演示的方面,这里我不错更多的封装,添加一个属性,直接让外界将item个数传递进来,我们把重心方法重写布局的方法:...布局的类,因此,collectionView在进行UI布局前,会通过这个类的对象获取相关的布局信息,FlowLayout类将这些布局信息全部存放在了一个数组中,数组中是UICollectionViewLayoutAttributes...总之,FlowLayout类将每个item的位置等布局信息放在一个数组中,在collectionView布局时,会调用FlowLayout类layoutAttributesForElementsInRect...:方法来获取这个布局配置数组。...{     return 1; } -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection

    3K20

    iOS自定义的emoji表情键盘 原

    = [UIFont systemFontOfSize:25];     label.text = @"\uE056";     [self.view addSubview:label]; 就会在屏幕出现一个笑脸...我们可以通过遍历的方法,将其都加入数据源数组中: int emojiRangeArray[10] = {0xE001,0xE05A,0xE101,0xE15A,0xE201,0xE253,0xE401,0xE44C...emojiRangeArray[j+1];                  for (int i = startIndex ; i<= endIndex ; i++ ) {         //添加到数据源数组... str = dataArray[indexPath.section*28+indexPath.row];     //这里手动将表情符号添加到textField      } //翻页后对分页控制器进行更新...追注:测试上面的SBUnicode码在模拟器可以正常显示,真机并不能识别,可以通过将表情符全部添加到一个plist文件中,通过文件读取来创建键盘的方式进行真机上的开发。

    2.9K10

    给UICollectionView设置组背景和组圆角-Swift

    我们大致的思路是这样的: 给UICollectionView 每一组添加一个修饰View,然后在这个修饰View我们设置组圆角和背景色,最后我们把CollectionCell 设置成 Clean背景就可以达到我们想要的效果....collectionView?(self.collectionView!...,不要忘记我们是根据修饰View初始化得到这个属性的,按照正常的操作我们会在最后返回一个属性数组,自定义过collection布局的应该清楚一些,具体的PPCollectionViewDelegateFlowLayout...(attribute) } } return attributes } /// 给Decorationview返回属性数组...been implemented") } } 最后: 最后我们在最前面说的registClass这个方法我们在PPBaseFlowLayout的初始化方法里面调用就可以了,还有属性数组这写就不用说了吧还是在前面自己定义初始化了

    3.7K51

    iOS 瀑布流实现「建议收藏」

    static CGFloat const columnCount = 3;//列的个数 static UIEdgeInsets edgeInsets = {10,10,10,10};//内边距的集合,依次是,...对于高度的数组,我们首先将里面的元素都设置为0,因为在刚开始的时候第一个item距离顶端的距离就是0。...:self.collectionView layout:self sizeForItemAtIndexPath:indexPath]; //然后比较列数组中的列的高度,找出最小高度的列 float...shorterHeight = height; //记下此时是第几列 colindex = i; } } //把一排最小的列的高度取出来便于后面确定坐标...然后我们在下面的那个方法里面调用这个方法,他返回给我们需要显示的cell对应的indexPath的数组,接着我们通过遍历这个数组取出其中的cell对应的indexPath,然后调用 layoutAttributesForItemAtIndexPath

    2.3K41

    Swift-低仿搜狐新闻标签页效果

    在ViewController里自定义了两个数组,我的频道(myChannels)和更多频道(moreChannels) 在点击+跳转到频道管理页面的点击方法里面有一个回调方法,即:将选中的频道、以及自定义后的频道回传到此页面...collectionView.dataSource = self collectionView.delegate = self collectionView.register...的代理方法,在将选中的Item移动到目标的Item的时候,我的方法处理的不是太好。...IndexPath) { /* 1.以下方法是处理移动后的数组中的元素'删除'或'新增'问题. 2.不这样处理,就会崩溃.自己算法水平有限...我的频道里面第一个Item本意我是不希望他可以被移动的,但是如果将其它的Item移动到第一个位置依然可以,背离了我的初衷。

    1.9K40

    iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)

    在之前的博客中,我们系列的介绍了UICollectionView的各种回调,以及如何自定义CollectionView的布局,并给出了如何使用CollectionView自定义瀑布流。...下方就是我们所封装控件的调用方式,下方的二维数组dataSource就是我们所封装控件中的CollectionView中的数据源,该数据源中的数据项要遵循我们指定的CEThemeDataSourceProtocal...该字符串就是我们要在Cell显示的Menu的名字。 ? 下方就是创建我们的数据项的测试数据相关代码。下方的MeteData类就是我们要在上述控件测Cell中显示的数据。...该方法返回的二维数组就是我们需要的数据源。 ? 三、控件核心代码介绍 上面我们简单介绍了该控件的调用方式,接下来我们来看一下该控件的核心代码的实现。...2、为CollectionView添加长按手势 接下来要做的就是给CollectionView添加LongPressGestureRecognize。

    1.6K50

    抛弃UITableView,让所有列表页不再难构建

    周末空闲时,小明去github逛了逛,发现了能够拯救他的救世主--IGListKit。...IGListKit IGListKit是Instagram出的一个基于UICollectionView的数据驱动UI框架,目前在github上有9k+ star,被充分利用在Instagram App,...() collectionView.frame = view.bounds } 创建adapter,将collectionView和它适配起来 //存放数据的数组,数据模型需要实现...Feed } } 这里把点击commentCell的删除按钮事件代理出来给CommentSectionController处理,在闭包里先对cellModels数组删除,然后调用IGListKit...基本都是要自己计算cell的size的,不过IGListKit将大cell分成小cell了,计算高度已经变的容易很多了,这个缺点可以忽略了 因为是基于UICollectionView的,所以没有UITableView

    1.6K30

    Swift多线程之Operation:异步加载CollectionView图片1. Operation 设置依赖关系2. 前置知识点内容3. CollectionView中图片进行异步加载

    距离一篇更新又过去了半个月,现在基本上变成每月两更啦。/(ㄒoㄒ)/~~ 其实俺也不想,俺也想学那些勤奋好学的小盆友们,麻利儿的日更。但是臣妾做不到啊,超有难度。...然后就是一道相对丰盛的大菜,使用Operation在CollectionView实现子线程加载图片的案例。这个例子其实在生产中经常可以碰见。先把界面加载出来,然后再慢慢往item里面加载图片。...一个数组,简简单单就变成了两个数组。 Swift是支持一门函数式编程的语言,Map是针对集合类型的操作。map方法会遍历调用者,对数组中的每一个元素执行闭包中定义的操作。...咱们newArray执行的操作就是把testNumberArray数组中每一个元素都加了2。...给item赋值图片的重点地方的代码: override func collectionView(_ collectionView: UICollectionView, willDisplay cell:

    1.5K70

    3D图形渲染技术

    Z轴的坐标系 但是在2D的屏幕坐标上不可能有XYZ立体的坐标轴 所以需要图形算法负责把3D坐标“拍平”显示到2D屏幕,这个叫做3D投影 将3D的点转换为2D的点之后,再用之前链接2D点的方法去连接这些点...从远到近渲染,这叫画家算法,因为画家也是先画背景再画更近的 东西 步骤 第一步,就是从远到近进行排序(A黄色,B蓝色,C绿色 三个三角形的距离) 有序之后,利用扫描线算法进行填充多个多边形,一次一个...(顺序是从远到近进行色) 深度缓冲 这个算法和画家算法的思路一样,但是方法不一样 而且深度缓冲算法不需要进行排序,所以它的速度会更快 Z-buffering算法会记录场景中每个像素和摄像机的距离...可以看看内存中的纹理图像,决定填充该像素区域时用什么颜色 做到这点,需要将多边形坐标和纹理坐标进行对应 多边形坐标和纹理坐标进行对应 当决定填充当前像素选择什么颜色时,纹理算法进行查询纹理,从相应的区域取平均颜色,并填充到多边形...cpu不是为此设计的,因此图形运算不快,所以计算机工程师为图形做了专门的处理器,叫做GPU"图形处理单元" GPU在显卡,周围有专用的RAM,所有网格和纹理都在里面,让GPU的多个核心可以高速访问

    1.7K20

    Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

    = self collectionView.dataSource = self self.view.addSubview(collectionView) } }...事实,它既不是 Cell 视图,也不是 Supplementary View,而是 UICollectionView 的 Decoration View;Decoration View 不同与前两者,...(self.collectionView!...var attrs = super.layoutAttributesForElements(in: rect) // 在当前 rect 区域内过滤 sectionAttrs 数组内的熟悉...但当我真正的去整理它的一些技术点时,我发现它实在是太灵活了,以前觉得追加视图,装饰视图这些东西很简单,几行代码的事情,但事实,当你想要去实现一些高度自定义的界面的时候,你才会认识到自己的不足,你并没有对这些知识有更深层次的认知

    2.1K10
    领券