码迷,mamicode.com
首页 > 编程语言 > 详细

第一个swift项目

时间:2015-12-10 18:56:44      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

一,往新建的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)
          }

  

第一个swift项目

标签:

原文地址:http://www.cnblogs.com/luoxiaoxi/p/5035385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!