iOS Swift checkmark for TableViewCell
Published: 2015-06-04 Updated: 2016-12-20
当在一个html项目中我们经常需要用到checkbox来勾选需要的内容, 使用起来也很简单<input type="checkbox">
, 在iOS中就没那么好用了, 总之跟打太极一样, 挺烦的, 不过不也没办法吗, 谁叫我们摊上 iOS 这事了呢, 是吧, 这里做下记录
新建一个Swift iOS 项目
老样子我们先新建一个single view application
参照这个就行了 http://huyaohui.com/2015/05/28/resignFirstResponder-close-keyboard/
新建一个tableviewcontroller
attribut inspector -> Style -> Basic
attribut inspector -> accessory -> Checkmark
attribut inspector -> Identifier填上CheckmarkCell(只是一个标识, 随便填, 但是一定要有意义)
还有就是把默然的那个ViewController删了或者把入口拖到新建的TableViewController上
这里就不贴图了, 看过我以前的Blog的或是在别的地方学过一点点的, 应该知道怎么弄的, (^__^) 嘻嘻……
新建TableViewController.swift
也没什么好说的, 这个都做过很多变的, 是在不想再写了, 可以看看我之前的Blog
关联
- 把TableViewController这个类关联到storyboard中TableViewController中
- 同样不知道的可以看我之前的Blog
关键代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| import UIKit
class TableViewController: UITableViewController { let checkmarkCacheData = [ "China", "America", "England", "Japan", "Germany" ] var selectedItem:String? var selectedItemIndex:Int? = 0 override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return checkmarkCacheData.count } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("CheckmarkCell", forIndexPath: indexPath) as! UITableViewCell cell.textLabel?.text = checkmarkCacheData[indexPath.row] if indexPath.row == selectedItemIndex { cell.accessoryType = .Checkmark } else { cell.accessoryType = .None } return cell } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { if let index = selectedItemIndex { let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: index, inSection: 0)) cell?.accessoryType = .None } selectedItemIndex = indexPath.row selectedItem = checkmarkCacheData[indexPath.row] let cell = tableView.cellForRowAtIndexPath(indexPath) cell?.accessoryType = .Checkmark } }
|
完成的样子
代码地址
MakeHui/SwiftBaseCodes
参考资料
Storyboards Tutorial in Swift: Part 2
总结
总得来说还是有点复杂的, 感学开发iOS项目就像是在堆积木一样, 零件都在那里, 完全看自己怎么拼了