iOS编程之UITableView的使用(Xcode6.3 iOS8.x Swift Storyboard)

1. 创建新的project

打开Xcode,点击“create a new Xcode project”,如下图。

ios-demo-create-new-xcode-project

 

填写“project name”等相关信息,如下图。

 

ios-demo-create-new-xcode-project-input-name

 

2. 在ViewController中定义TableView的一个outlet

共有两种方法:

  1. 直接在ViewController的Class中以如下语句定义
    @IBOutlet var mainTableView: UITableView!
    
  2. 先在视图中创建一个TableView,然后右键拖拽其到ViewController中释放,定义outlet。

这里采用第一种方法。

3. 在视图中创建一个TableView

方法是在“object library”中找到TableView,左键点击按住,拖拽其到视图上释放,如下图。

ios-demo-insert-tableview

4. 连接TableView和outlet

需要将TableView和它的outlet连接起来,首先,点击ViewController的图标,在右侧选择显示“Connections Inspector”,我们发现在2中定义的outlet已经被显示出来,如下图:

ios-demo-tableview-outlet

连接的方法是点击outlet中“mainTableView”右侧的空心圆圈,按住左键,拖动鼠标至TableView上后释放,如下图:

ios-demo-tableview-define-outlet

5. 定义TableView的dataSource和delegate

除outlet外,还需定义TableView的dataSource和delegate,分两步进行:

  1. 在ViewController的Class中声明,即在
    class ViewController: UIViewController {...}
    

    处加入“UITableViewDelegate, UITableViewDataSource”使之成为

    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {...}
    
  2. 需要连接dataSource和delegate到ViewController,方法是首先在视图中选中TableView,然后在右侧的“Connections Inspector”中可以看到其dataSource和delegate,如下图ios-demo-tableview-attributes,之后点击dataSource和delegate右侧的空心圆圈,按住鼠标左键,拖动鼠标至ViewController图标上释放,如下图ios-demo-tableview-datasource-outlet

完成以上两步后,dataSource和delegate的定义完成。

6. 相关代码编写

完成以上操作后,即可在ViewController中编写代码,控制TableView显示的内容等等,代码如下:

//
//  ViewController.swift
//  TableViewDemo
//
//  Created by Xu Jie on 15/5/1.
//  Copyright (c) 2015年 J.Xu. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
    // 定义TableView的outlet,可自由定义,不一定必须是“tableView”
    @IBOutlet var mainTableView: UITableView!
    
    // 需要显示的内容
    var items: [String] = ["武汉","上海","北京","深圳","广州","重庆","香港","台海","天津"]

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 定义cell的类
        self.mainTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    }
    
    // 指定TableView共有多少行
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.items.count;
    }
    
    // 设定TableView列表每个单元(行)的内容
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        var cell:UITableViewCell = self.mainTableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell
        cell.textLabel?.text = self.items[indexPath.row]
        
        return cell
    }
    
    // 选中某行时执行
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        println("You selected cell #\(indexPath.row)!")
    }
    
    // 删除某行时执行
    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
        var index=indexPath.row as Int
        self.items.removeAtIndex(index)
        self.mainTableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)
        NSLog("删除\(indexPath.row)")
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据