zoukankan      html  css  js  c++  java
  • [IOS]swift自定义uicollectionviewcell

    刚刚接触swift以及ios,不是很理解有的逻辑,导致某些问题。这里分享一下swift自定义uicollectionviewcell

    首先我的viewcontroller不是直接继承uicollectionviewcontroller,而是添加的uicollectionview到我的storyboard,

    然后再新建一个swift的文件,让这个swift继承uicollectionviewcell

    import Foundation
    
    class SVGCell :UICollectionViewCell{   
        convenience   required   init(coder : NSCoder){
            self.init(frame:CGRect(x: 0, y: 0,  50, height: 50))
        }   
    //    required init(coder: NSCoder) {
    //        fatalError("NSCoding not supported")
    //    }
        override  init(frame: CGRect) {
            super.init(frame: frame)
        }
    //about Inheritance
        //http://stackoverflow.com/questions/25126295/swift-class-does-not-implement-its-superclasss-required-members
    }

    这里继承UICollectionViewCell的时候需要复写 一个父类初始化方法,以及一个required的初始化方法,上面的一个链接是关于这个required的方法的一个说明,是新的版本所必须的,否则会报语法错误,错误内容大概是要求你实现一个required方法。

    这里不能够写一个自定义的初始化,因为这个cell不是因为init所创建的。

    然后回到我们的viewcontroller

    import UIKit
    
    
    class ViewController: UIViewController ,UICollectionViewDataSource,UICollectionViewDelegate {//继承后面这两个协议,需要使用collectionview所必须的然后可以复写下面的三个必须的方法
        
      @IBOutlet weak var svgcollection: UICollectionView!

        let reuseidentifier="SVGCell"

      func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int {
            return 2
        }//这3个func在继承了datasource & delegate一定要重写,如果有多个tableview 或者collection view 则在里面使用判断,对参数collectionview判断
        
        
        func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
            
            var cell:SVGCell=svgcollection.dequeueReusableCellWithReuseIdentifier(reuseidentifier, forIndexPath: indexPath) as SVGCell
            //reuse
          
            //这里这个cell不需要初始化
            //在return 之前 构造 一个cell 这里如果再次初始化的话,会导致uncatch的exception,内容大概是没有 reuseidentifier
            return cell
        }//
        
         func numberOfSectionsInCollectionView(collectionView: UICollectionView!) -> Int {
            return 1
        }//
    

    在添加到我们的storyboard的uicollectionview的里面

    这个栏目里面的cell设置它的属性

    设置好Identifier属性就基本完成了,接下来可以在自定义的uiviewcollectionCell的类里面写自己需要的代码了。

    另外需要更新这个uicollectionview的时候,只需要使用这个view的 reload方法就可以重新加载,修改需要加载的内容就可以了。

  • 相关阅读:
    死锁
    Notepad++源代码阅读——窗口封装与继承
    Notepad++源代码阅读——窗口元素组织与布局
    选择问题(selection problem)
    插入排序 | 冒泡排序 | 希尔排序 | 堆排序 | 快速排序 | 选择排序 | 归并排序
    编程之美2014---大神与三位小伙伴
    ulimit 修改 open files & core
    tmux手记
    匿名访问windows server 2008 R2 文件服务器的共享
    WINDOWS系统变量
  • 原文地址:https://www.cnblogs.com/zoe-j/p/3920699.html
Copyright © 2011-2022 走看看