第一个swift项目

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

  

时间: 2024-12-15 23:33:34

第一个swift项目的相关文章

25.怎样创建一个Swift项目?

经历前面三部分的学习之后,我们对于Swift的有了基本的了解,知道它的基础语法,也知道了类.结构体.枚举.协议.扩展等等内容.但知道上面这些内容,并不代表我们就能很好的进行实际的项目开发了,本部分内容将手把手的教你进行Swift的项目开发. 1.新建Swift项目 打开XCode,选择[File] --> [New] --> [Project](也可以同时按住command+shift+N快捷创建),如下图所示: 单击[Project]之后,将弹出选择项目模板的界面,这里我们可以选择[Sing

Swift项目引入第三方库的方法

以下,将创建一个Swift项目,然后引入3个库: Snappy 简化autolayout代码的库 Alamofire HTTP网络库,AFNetworking作者写的 SDWebImage 图片加载,objc项目,通过头文件bridge方式供swift使用 其中,前两个是Swift的库,SDWebImage是Objc的库. 源代码见:https://github.com/MarshalW/SwiftWith3rdLibDemo 项目跑起来是这个样子: 做下面步骤之前,需要让自己的项目是git项目

swift项目初始化并添加忽略文件Swift.ignore

1 先去GitHub上去把最新的忽略文件下载下载 https://github.com/github/gitignore 2 然后找到Swift.gitignore  把里面的 pod 前面的# 删除然后保存  3 去码云上新建一个项目 然后把项目克隆到本地 git clone  [email protected]:******** 把刚刚的忽略文件放在克隆下来的项目里 进去  cd 当前的项目  然后输入命令 mv Swift.gitignore  .gitinore  隐藏忽略文件 /* d

十大开源Swift库开始你的下一个iOS项目

随着Swift变得更加成熟,开源Swift库变得越来越多样化并且数量迅速增长.在本文中,我策划了可用于引导您的下一个iOS项目的最佳开源Swift库.它们将使您的代码库更加强大,性能更高,并允许您 更快地发布iOS项目. 事实上,在我的应用中,我集成了几乎所有这些开源库,如SnapKit,MapKit,ChartKit等.基于我的移动开发经验,今天我将介绍最知名和最常用的iOS库,在MIT许可下免费,在Github上. 1. Alamofire 对于服务器通信,除了使用iOS的内置类  URLS

Swift项目兼容Objective-C问题汇总

本文是投稿文章,作者:一叶(博客)欢迎将原创文章或者译文投给我们,投稿方式:[email protected]或者在首页点击“投稿爆料” 一.解决问题 Swift 项目需要使用封装好的Objective-c组件.第三方类库,苹果提供的解决方案能够处理日常大部分需求,但还不能称之为完美,混编过程中会遇到很多问 题.本文将Swift兼容Objective-c的问题汇总,以帮助大家更好的使用Swift,内容列表如下: 1. Swift调用Objective-c代码 2. Objective-c调用Sw

在 Swift 项目中实现侧滑菜单-利用 SWRevealViewController

你可以完全自己手动写一个侧滑菜单,但是现在在 GitHub 上面已经有很多免费的开源库了,如果不是有很特别的需求,大可不必新建一个轮子. 在这里我使用的这个第三方库名字叫做 SWRevealViewController,作者是 John Lluch.这个免费的类库提供了很方便快捷的方法去把侧滑菜单加入到你的 App 里面,而且它还提供了很多个性化的设置项.它是用 Objective-C 来写的,但是我们也可以很方便的在 Swift 项目中去使用它.你分分钟便可学会如何使用. 首先来看一下我们的

如何向Openstack社区提交一个新项目

前几天有个朋友问我:自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交一个新项目. Openstack的整套系统就是一个开源项目的“大杂烩”,社区把所有项目划分为两类:核心和孵化.除非出身特别牛逼或者从其他核心项目独立出来的项目会在设计之初就被列为核心项目(例如Nuetron,Ironic等):其他项目一般划分到孵化类,在通过一个或多个大版本的发展后,如果变得成熟满足

Swift项目实战-基于分层架构的多版本iPhone计算器-免费直播公开课邀您参与

Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播课 好消息:买本课程送相关讲师图书+50金币课程优惠券!还有更好消息,为了回馈新老学员,本次采取直播免费,录播收费的形式哦~! 购买本课程赠送关东升老师价值69元国内第一本<Swift开发指南>,并且赠送50元优惠券一张.69+50>99.(购买课程后请联系客服QQ:1575716557) 本课程采用QQ群直播方式进行直播,直播免费看了,完整的基于Swift项目实战,手把手教你做一个Swift版iPhone计算器. 直播

Swift学习第二练——Swift项目时光电影

Swift学习第二练--Swift项目时光电影 很早以前的一个OC的练习项目,用swift重新写了一遍,因为xcode版本的更新对swift的兼容度也在不断改变,此版本适用于xcode6.1. 这个项目中,用swift将iOS官方SDK中的HTTP进行了封装,使用了swift编写的异步加载网络图片的方法.练习了用swift操作界面布局,跳转界面等的方法. 下面是封装的下载类的核心代码: private var httpConnection:NSURLConnection? class ZYHHt