iOS学习- 15 Edit tableview item - Todo App
来源:互联网 发布:手机怎么变成2g网络了 编辑:程序博客网 时间:2024/05/17 01:56
1.) click item navigation to adding view controller before
adding a new segue ( table view cell -> Detail View controller) named : EditTodo
screen:
code:
//
// DetailViewController.swift
// Todo
//
// Created by Ricky Choi on 16/6/3.
// Copyright © 2016年 worm. All rights reserved.
//
import UIKit
class DetailViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var childButton: UIButton!
@IBOutlet weak var phoneButton: UIButton!
@IBOutlet weak var shoppingCartButton: UIButton!
@IBOutlet weak var travelButton: UIButton!
@IBOutlet weak var todoItem: UITextField!
@IBOutlet weak var todoDate: UIDatePicker!
var todo: TodoModel?
override func viewDidLoad() {
super.viewDidLoad()
todoItem.delegate = self
// Do any additional setup after loading the view.
if todo == nil {
childButton.selected = true
navigationItem.title = "新增Todo"
}
else {
navigationItem.title = "修改Todo"
if todo?.image == "child-selected" {
childButton.selected = true
}
else if todo?.image == "shopping-cart-selected" {
shoppingCartButton.selected = true
}
else if todo?.image == "phone-selected" {
phoneButton.selected = true
}
else if todo?.image == "travel-selected" {
travelButton.selected = true
}
todoItem.text = todo?.title
todoDate.setDate((todo?.date)!, animated: false)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func resetButtons() {
childButton.selected = false
phoneButton.selected = false
shoppingCartButton.selected = false
travelButton.selected = false
}
@IBAction func childTapped(sender: AnyObject) {
resetButtons()
childButton.selected = true
}
@IBAction func phoneTapped(sender: AnyObject) {
resetButtons()
phoneButton.selected = true
}
@IBAction func shoppingCartTapped(sender: AnyObject) {
resetButtons()
shoppingCartButton.selected = true
}
@IBAction func TravelTapped(sender: AnyObject) {
resetButtons()
travelButton.selected = true
}
@IBAction func okTapped(sender: AnyObject) {
var image = ""
if childButton.selected {
image = "child-selected"
}
else if phoneButton.selected {
image = "phone-selected"
}
else if shoppingCartButton.selected {
image = "shopping-cart-selected"
}
else if travelButton.selected {
image = "travel-selected"
}
if todo == nil {
//let uuid = NSUUID.UUID().UUIDString
let uuid = NSUUID().UUIDString
var todo = TodoModel(id: uuid, image: image, title: todoItem.text!, date: todoDate.date)
todos.append(todo)
}
else {
todo?.image = image
todo?.title = todoItem.text!
todo?.date = todoDate.date
}
}
//Implement UITextfieldDelegae to close keyboard
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
//click parent container to close keyboard
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
todoItem.resignFirstResponder()
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
ViewController.swift
//
// ViewController.swift
// Todo
//
// Created by Ricky Choi on 16/6/1.
// Copyright © 2016年 worm. All rights reserved.
//
import UIKit
var todos: [TodoModel] = []
func dateFromString(dateStr: String) -> NSDate? {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyy-MM-dd"
let date = dateFormatter.dateFromString(dateStr)
return date
}
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
todos = [TodoModel(id: "1", image: "child-selected", title: "1. 去游乐场", date: dateFromString("2014-11-2")!),
TodoModel(id: "2", image: "shopping-cart-selected", title: "2. 购物", date: dateFromString("2014-10-28")!),
TodoModel(id: "3", image: "phone-selected", title: "3. 打电话", date: dateFromString("2014-10-30")!),
TodoModel(id: "4", image: "travel-selected", title: "4. Travel to Europe", date: dateFromString("2014-10-31")!),
]
navigationItem.leftBarButtonItem = editButtonItem()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//Implement UITableviewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//return 50
return todos.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("todoCell")! as UITableViewCell
var todo = todos[indexPath.row] as TodoModel
//get control from tag
var image = cell.viewWithTag(101) as! UIImageView
var title = cell.viewWithTag(102) as! UILabel
var date = cell.viewWithTag(103) as! UILabel
image.image = UIImage(named: todo.image)
title.text = todo.title
let locale = NSLocale.currentLocale()
let dateFormat = NSDateFormatter.dateFormatFromTemplate("yyyy-MM-dd", options: 0, locale: locale)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = dateFormat
date.text = dateFormatter.stringFromDate(todo.date)
return cell
}
//Implement UITableviewDelegate
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
todos.removeAtIndex(indexPath.row)
//self.tableView.reloadData()
self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
//Edit Mode in navigation bar
override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing , animated: animated)
self.tableView.setEditing(editing, animated: animated)
}
@IBAction func close(segue: UIStoryboardSegue) {
print("closed")
tableView.reloadData()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "EditTodo" {
var vc = segue.destinationViewController as! DetailViewController
var indexPath = tableView.indexPathForSelectedRow
if let index = indexPath {
vc.todo = todos[index.row]
}
}
}
}
- iOS学习- 15 Edit tableview item - Todo App
- iOS学习- 15 Move tableview item - Todo App
- iOS学习- 14 adding tableview item logic - Todo App
- iOS学习- 16 search tableview item - Todo App
- iOS学习- 11 TableView 显示TableViewCell 显示 - Todo App
- iOS学习- 09 控件 UITableViewController - Todo App
- iOS学习- 13 删除Table View中的Cell - Todo App
- iOS学习- 14 增加Table View中的iteml - Todo App
- TableView Edit
- iOS学习- 10 定义数据模型及构造本地运行时数据 - Todo App
- iOS学习- 12 绑定数组数据到Table View - Todo App
- IOS 学习 TableView
- ios学习--TableView详细解释
- ios学习--TableView详细解释
- ios学习--TableView详细解释
- ios学习--TableView详细解释
- IOS学习之tableView扩展
- IOS学习之tableView扩展
- 算法 剑指Offer 面试题32 从1到n整数中1出现的次数
- awk 命令
- java servlet实现上传文件代码及其原理说明
- python——template (一)
- JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this
- iOS学习- 15 Edit tableview item - Todo App
- 第一篇博文
- 相似图片搜索、算法、识别的原理解析(上)
- React 组件之间如何交流
- Ubuntu 12.04 下 android studio 安装 和 配置
- MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。
- 【AS导包】Android Studio 导入第三方jar包
- win-tc不能在win7下使用
- 文章标题