Swift 2.0 UItableView 的简单使用

在IOS开发中,UItableView 的使用真的是最常见最普通的了,现在在自学swift 今天也是这用Swift 写了写 UItableview的使用,还有一些经常出错的地方。下面我先把整个控制器的代理列出来,大家可以顺便看看 swift 是怎样遵守协议的。

import UIKit
// 遵守两个协议
class HomeViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor=UIColor.whiteColor()
        
        // 创建tableview
        creatTableview()
        
        // Do any additional setup after loading the view.
    }
    
  //  创建tableView的方法
    func creatTableview()
    {
        
        let tableview:UITableView = UITableView(frame: self.view.frame, style: UITableViewStyle.Plain)
        tableview.delegate = self
        tableview.dataSource = self
    
        // 这里要不注册,用下面的   dequeueReusableCellWithIdentifier 这个方法的时候会崩溃,这里和大家说一下,dequeueReusableCellWithIdentifier("SwiftCell", forIndexPath: indexPath)  要使用这个方法,在这里你就必须得先注册一个复用的cell,然后使用的时候 dequeueReusableCellWithIdentifier 会去调用能复用的cell 

        tableview.registerClass(UITableViewCell.self,
           forCellReuseIdentifier: "SwiftCell")
        self.view.addSubview(tableview)
        
    }
    
    //  组数
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
         return 3
    }
    
    //  每组的个数
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

     switch  section
     {
          case 0:
        
              return 5
        
          case  1:
           
              return 3
           
          case  2:
        
               return 4
        
          default:
        
                return 0
     }
        
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("SwiftCell", forIndexPath: indexPath)
        cell.textLabel?.text="你真的很帅"
        return cell
        
        
    }
    
    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        
        return 20
    }
    

    // tableView是否能编辑,true 返回,就是能编辑
    func tableView(tableView: UITableView, shouldIndentWhileEditingRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        
        return true
    }
    
    // 你要删除cell的时候,这个方法会自己调用的,这里一般就是在数据源里面删除cell 对应的数据。
    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        
        print("删了这条数据了")
        
    }
    
    //  这里是编辑的类型
    func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
        
        return UITableViewCellEditingStyle.Delete
        
    }
    
   //  这里是给 删除按钮上的 按钮文字进行重命名,这里是改成“别删呀”的名字。
    func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? {
        
       return "别删呀"
        
    }
    
    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

特别说明几点内容:

1.自定义cell时,

若使用nib,使用 registerNib: 注册,dequeue时会调用 cell 的 -(void)awakeFromNib 不使用nib,使用 registerClass: 注册, dequeue时会调用 cell 的 - (id)initWithStyle:withReuseableCellIdentifier:

2.需不需要注册? 使用dequeueReuseableCellWithIdentifier:可不注册,但是必须对获取回来的cell进行判断是否为空,若空则手动创建新的cell; 使用dequeueReuseableCellWithIdentifier:forIndexPath:必须注册,但返回的cell可省略空值判断的步骤。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

iOS开发之窥探UICollectionViewController(二) --详解CollectionView各种回调

UICollectionView的布局是可以自己定义的,在这篇博客中先在上篇博客的基础上进行扩充,我们先使用UICollectionViewFlowLayout...

2258
来自专栏iOS开发攻城狮的集散地

iOS UITableView获取特定位置的cell

3388
来自专栏Rindew的iOS技术分享

iOS实现三列表格点选(附Demo)

2093
来自专栏菩提树下的杨过

java学习:Hibernate学习-用oracle sequence序列生成ID的配置示例

接上回继续,TMP_EMP中的ID是根据序列SQ_TMP_EMP来生成的,需要在TmpEmp.hbm.xml中设置:   <id name="id" type=...

2089
来自专栏编程微刊

hcharts实现堆叠柱形图

1563
来自专栏iOS开发攻城狮的集散地

iOS UITableView获取特定位置的cell

1303
来自专栏Rindew的iOS技术分享

iOS中runtime的简单用法——动态绑定

2755
来自专栏疯狂的小程序

微信小程序分享:TabBar不出现如何处理

今天打算开始实战一个微信小程序项目,一开始就踩坑了,正确设置了TabBar,但是TabBar就是不能显示出来,后面才找到原因,这里记录下:

2245
来自专栏一“技”之长

iOS使用UIImagePickerController调用系统相机、相册与图库

        UIImagePickerController是系统封装好的一个导航视图控制器,使用其开发者可以十分方便的进行相机相册相关功能的调用。UIIma...

2611
来自专栏技术之路

【swift学习笔记】三.使用xib自定义UITableViewCell

使用xib自定义tableviewCell看一下效果图 ? 1.自定义列 新建一个xib文件 carTblCell,拖放一个UITableViewCell,再拖...

2237

扫码关注云+社区

领取腾讯云代金券