码迷,mamicode.com
首页 > 移动开发 > 详细

ios开发——实战Swift篇&简单项目的实现

时间:2015-06-19 21:36:14      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

 

 

学了这么久的swift语法和相关技术,今天忍不住手痒痒就写了一个swift的小项目,这个项目非常简单(只是使用一个UITableView),但是里面的功能却非常有用。

 

我们要实现的功能是这样的:

程序启动之后就会出现主界面,在主界面有一些默认的度假地

技术分享

点击编辑就会出现能过编辑的界面(这里编辑只实现了删除,修改没有处理,增加在+实现了),也可以手指向左拖动实现,

技术分享技术分享

点击+可新增一个项目行

技术分享

是不是很简单?

下面就看看代码时证明实现的

一;定义一个类用来处理对应的属性

1 import Foundation
2 
3 class Vocation {
4     var place = ""
5     var visited = false
6 }

二:在主界面嘞中实现下面代码

  1 import UIKit
  2 
  3 class ListTableViewController: UITableViewController {
  4     //度假地数组
  5     var vocationList = [Vocation]()
  6     
  7     //添加度假地
  8     func loadInitListData() {
  9         /**
 10          类的初始化,初始化五个度假地,设置度假地的地名,并且添加到列表中
 11         */
 12         let vocation1 = Vocation()
 13         vocation1.place = "北京"
 14         vocationList.append(vocation1)
 15         
 16         let vocation2 = Vocation()
 17         vocation2.place = "上海"
 18         vocationList.append(vocation2)
 19         
 20         
 21         let vocation3 = Vocation()
 22         vocation3.place = "深圳"
 23         vocationList.append(vocation3)
 24         
 25         let vocation4 = Vocation()
 26         vocation4.place = "广州"
 27         vocationList.append(vocation4)
 28         
 29         let vocation5 = Vocation()
 30         vocation5.place = "南京"
 31         vocationList.append(vocation5)
 32         
 33     }
 34 
 35     override func viewDidLoad() {
 36         super.viewDidLoad()
 37         //导航栏左边的按钮
 38         self.navigationItem.leftBarButtonItem = self.editButtonItem()
 39         
 40         //初始化
 41         loadInitListData()
 42     }
 43     
 44     override func setEditing(editing: Bool, animated: Bool) {
 45         super.setEditing(editing, animated: true)
 46         //设置表格可以编辑
 47         tableView.setEditing(editing, animated: true)
 48         
 49     }
 50 
 51     override func didReceiveMemoryWarning() {
 52         super.didReceiveMemoryWarning()
 53     }
 54 
 55 
 56     override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
 57         //返回一节数据
 58         return 1
 59     }
 60 
 61     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
 62         //返回数组中数据的数量
 63           return   vocationList.count
 64     }
 65 
 66     override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
 67         //重用机制,我们需要在单元格中设置对应的Identifier
 68         let cell = tableView.dequeueReusableCellWithIdentifier("ListID", forIndexPath: indexPath) as! UITableViewCell
 69         //保存状态
 70     let v = vocationList[indexPath.row]
 71         //根据数组的索引出来的地点来填充数据到对应的行
 72         cell.textLabel?.text = v.place
 73         //判断单元格的状态
 74         if v.visited {
 75             //如果已经参观过则点击一下现实一个勾
 76             cell.accessoryType = UITableViewCellAccessoryType.Checkmark
 77         }else {
 78             //如果没有去过可以取消点击,去掉那个勾
 79             cell.accessoryType = UITableViewCellAccessoryType.None
 80             
 81             /**UITableViewCellAccessoryType对应的属性,这里是一个枚举(enmu:case)
 82             case None // don‘t show any accessory view
 83             case DisclosureIndicator // regular chevron. doesn‘t track
 84             case DetailDisclosureButton // info button w/ chevron. tracks
 85             case Checkmark // checkmark. doesn‘t track
 86             @availability(iOS, introduced=7.0)
 87             case DetailButton // info button. tracks
 88             */
 89         }
 90 
 91         return cell
 92     }
 93 
 94     //选择行
 95     override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
 96         //取出选择的对应行数据
 97         let v1 = vocationList[indexPath.row]
 98         //设置已经去过的地方,这里使用取反实现
 99         v1.visited = !v1.visited
100         //取消选中状态
101         tableView.deselectRowAtIndexPath(indexPath, animated: false)
102         //刷新表格
103         tableView.reloadData()
104         
105     }
106 
107     // 是否能够编辑
108     override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
109         return true
110     }
111 
112 
113     override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
114         //如果是删除状态
115         if editingStyle == .Delete {    //省略了UITableViewCellEditingStyle
116             //根据索引行删除数据
117             vocationList.removeAtIndex(indexPath.row)
118             //根据索引行删除单元格
119             tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
120             
121             /**UITableViewRowAnimation对应的属性,这里是一个枚举
122             case Fade
123             case Right // slide in from right (or out to right)
124             case Left
125             case Top
126             case Bottom
127             case None // available in iOS 3.0
128             case Middle // available in iOS 3.2.  attempts to keep cell centered in the space it will/did occupy
129             case Automatic // available in iOS 5.0.  chooses an appropriate animation style for you
130             */
131             
132             //如果是插入状态
133         } else if editingStyle == .Insert {
134             
135         }    
136     }
137 
138 
139 
140     // Override to support rearranging the table view.
141     override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
142 
143     }
144 
145     //是否能够移动
146     override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
147         return true
148     }
149 
150     //prepareForSegue方法
151     override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
152 
153     }
154 
155     
156     //回到主界面的方法
157     @IBAction func unwindToList(segue: UIStoryboardSegue){
158         //定义一个源控制器为我们自定义的控制器
159         let source = segue.sourceViewController as! AddViewController
160         let va = source.vocation
161         //判断度假地是否为空
162         if va.place != "" {
163             vocationList.append(va)
164         }
165     
166     }
167 
168 }

实现点击新增(+)界面的代码

 1 class AddViewController: UIViewController {
 2     //初始化类
 3     var vocation = Vocation()
 4 
 5     @IBOutlet weak var text: UITextField!
 6     //@IBOutlet weak var textField:UItextField!
 7     
 8     @IBOutlet weak var done: UIBarButtonItem!
 9     //@IBOutlet weak var doneBtn:UIBarButtonItem!
10     
11     override func viewDidLoad() {
12         super.viewDidLoad()
13 
14     }
15 
16     override func didReceiveMemoryWarning() {
17         super.didReceiveMemoryWarning()
18     }
19     
20 
21 
22 
23     override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
24         
25         if  sender as! NSObject == done {
26             if (!text.text.isEmpty) {
27                 vocation.place = text.text
28             }
29         }
30     }
31     
32     
33 

 

 

ios开发——实战Swift篇&简单项目的实现

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4589632.html

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