zoukankan      html  css  js  c++  java
  • [Xcode 实际操作]五、使用表格-(8)自定义UITableView单元格Accessory样式(附件图标)

    目录:[Swift]Xcode实际操作

    本文将演示如何自定义单元格的附件图标。

    在项目导航区,打开视图控制器的代码文件【ViewController.swift】

     1 import UIKit
     2 
     3 //首先添加两个协议。
     4 //一个是表格视图的代理协议UITableViewDelegate
     5 //另一个是表格视图的数据源协议UITableViewDataSource 
     6 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
     7 
     8     override func viewDidLoad() {
     9         super.viewDidLoad()
    10         // Do any additional setup after loading the view, typically from a nib.
    11 
    12         //创建一个位置在(0,40),尺寸为(320,420)的显示区域
    13         let rect = CGRect(x: 0, y: 40,  320, height: 420)
    14         //初始化一个表格视图,并设置其位置和尺寸信息
    15         let tableView = UITableView(frame: rect)
    16         
    17         //设置表格视图的代理,为当前的视图控制器
    18         tableView.delegate = self
    19         //设置表格视图的数据源,为当前的视图控制器
    20         tableView.dataSource = self
    21         
    22         //将表格视图,添加到当前视图控制器的根视图中
    23         self.view.addSubview(tableView)
    24     }
    25     
    26     //添加一个代理方法,用来设置表格视图,拥有单元格的行数
    27     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    28         //在此设置表格视图,拥有7行单元格
    29         return 7
    30     }
    31     
    32     //添加一个代理方法,用来初始化或复用表格视图中的单元格
    33     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    34         
    35         //创建一个字符串,作为单元格的复用标识符
    36         let identifier = "reusedCell"
    37         //单元格的标识符,可以看作是一种复用机制。
    38         //此方法可以从,所有已经开辟内存的单元格里面,选择一个具有同样标识符的、空闲的单元格
    39         var cell = tableView.dequeueReusableCell(withIdentifier: identifier)
    40         
    41         //判断在可重用单元格队列中,是否拥有可以重复使用的单元格。
    42         if(cell == nil)
    43         {
    44             //如果在可重用单元格队列中,没有可以重复使用的单元格,
    45             //则创建新的单元格。新的单元格具有系统默认的单元格样式,并拥有一个复用标识符。
    46             cell = UITableViewCell(style: .default, reuseIdentifier: identifier)
    47         }
    48 
    49         //索引路径用来标识单元格在表格中的位置。它有section和row两个属性,
    50         //section:标识单元格处于第几个段落
    51         //row:标识单元格在段落中的第几行
    52         //获取单元格在段落中的行数
    53         let rowNum = indexPath.row
    54         //根据当前单元格的行数,生成一个序列化的字符串,作为当前单元格的标题文字
    55         cell?.textLabel?.text = "Cell item (rowNum)"
    56         
    57         //返回设置好的单元格对象。
    58         return cell!
    59     }
    60     
    61     //添加一个代理方法,用来响应单元格的代理事件
    62     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    63         //获取表格中被点击的单元格
    64         let cell = tableView.cellForRow(at: indexPath)
    65         //如果被点击的单元格没有显示附加图标,
    66         if cell?.accessoryType == UITableViewCell.AccessoryType.none
    67         {
    68             //则显示复选标记图标,表示单元格处于选中状态
    69             cell?.accessoryType = UITableViewCell.AccessoryType.checkmark
    70         }
    71         else
    72         {
    73             //如果被点击的单元格已经存在附加图标,则隐藏附加图标,表示单元格处于非选中状态
    74             cell?.accessoryType = UITableViewCell.AccessoryType.none
    75         }
    76     }
    77 
    78     override func didReceiveMemoryWarning() {
    79         super.didReceiveMemoryWarning()
    80         // Dispose of any resources that can be recreated.
    81     }
    82 }
  • 相关阅读:
    eclipse lua
    eclipse新建python项Project interpreter not specified
    Laravel Debugbar
    Java中枚举类型简单学习
    SG函数题目
    关于解决博弈论问题的SG函数
    三种典型的博弈论问题
    Java I/O 对象序列化
    Java I/O 文件加锁,压缩
    Java I/O NIO学习
  • 原文地址:https://www.cnblogs.com/strengthen/p/10029052.html
Copyright © 2011-2022 走看看