标签:
一,往新建的swift单页面程序中添加一个Cocoa Touch类,用于存储数据以及交互
import UIKit
//创建本地数据模型
class TodoModel: NSObject {
var id:String
var image:String
var title:String
var date:NSDate
init(id:Stringimage:String,title:String,date:NSDate) {
self.id = id
self.image = image
self.title = title
self.date = date
}
}
二,在viewController的class外部,创建全局变量,作为本地运行时的数据库
var todos:[TodoModel]=[]
在viewDidLoad()中添加初始化数据:
todos = [TodoModel(id: "1", image: "child-selected", title:"1.去游乐场" , date: dateFromString("2016-1-1")!),
TodoModel(id: "2", image: "shopping-cart-selected", title:"2.购物" , date: dateFromString("2016-1-2")!),
TodoModel(id: "3", image: "phone-selected", title:"3.打电话" , date: dateFromString("2016-1-3")!),
TodoModel(id: "4", image: "travel-selected", title:"4.去阳逻旅游" , date: dateFromString("2016-1-4")!)]
为了方便处理NSDate变量,在Class外面创建两个全局方法
func dateFromString(dateStr:String)->NSDate?{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.dateFromString(dateStr)
return date
}
func stringFromDate(date:NSDate)->String{
let locale = NSLocale.currentLocale()
let dateFormat = NSDateFormatter.dateFormatFromTemplate("yyyy-MM-dd", options: 0, locale: locale)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = dateFormat
return dateFormatter.stringFromDate(date)
}
三,使用TableView控件显示数据库中的数据
1?打开storyboard,在view中拖控件TableView,在TableView 中添加Cell
2?将cell的style属性更改为basic,同时更改title内容
3?拖线到viewcontroller创建tableview的属性
4?为了配置tableview的属性,让viewcontroller继承UITableViewDataSource协议
5?实现协议里的两个方法:
//设置tableview的行数
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return 20
}
//设置复用的cell
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = self.tableview.dequeueReusableCellWithIdentifier("todoCell")! as UITableViewCell//取出cell
return cell
}
6?为了将tableview和viewcontroller连接起来,回到storyboard,左边栏,从tableview拖线到viewcontroller,选择datasource
四,客户化tablecell
1?将cell的style设为custom
2?更改cell的高度,往里面添加imageview,lable等控件
五,将Model 中的数据绑定到TableView中
1?更改设置tableview行数代码如下
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return todos.count //将数据库中的数据数量动态地显示到tableview中
}
2?更改前文复用cell的方法的代码如下
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = self.tableView.dequeueReusableCellWithIdentifier("todoCell")! as UITableViewCell//取出目标cell
//获取数据库以及存放数据的控件,为了方便取出cell中的控件,事先给cell中的控件tag赋值101,102,103
let todo = todos[indexPath.row] as TodoModel
let image = cell.viewWithTag(101) as! UIImageView
let title = cell.viewWithTag(102) as! UILabel
let date = cell.viewWithTag(103) as! UILabel
//将数据库里的数据传递到控件中去
image.image = UIImage(named:todo.image)
title.text = todo.title
date.text = stringFromDate(todo.date)
//返回配置好的cell
return cell
}
六,给tableview增加删除功能
1?为了配置tableview的行为,让viewcontroller继承UITableViewDelegate协议
2?实现协议中的删除方法:
//增加删除方法
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
//捕获删除操作
if editingStyle == UITableViewCellEditingStyle.Delete{
//移除选定的数据
todos.removeAtIndex(indexPath.row)
//增加删除动画
self.tableview.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
3?为避免用户不知道删除手势,增加编辑按钮:
在viewController中增加Navigation,并重写增加编辑按钮的方法
//增加编辑按钮
override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
self.tableview.setEditing(editing, animated: animated)
}
标签:
原文地址:http://www.cnblogs.com/luoxiaoxi/p/5035385.html