15 ios 스위프트 아주 간단한 todo 어플 만들기
tableviewController
//
// TableViewController.swift
// Table
//
// Created by MacBookPro on 2017. 11. 27..
// Copyright © 2017년 MacBookPro. All rights reserved.
//
import UIKit
//앱시작시 기본적으로 나타낼 목록
var items = ["책구매","원일이약속","스터디준비하기"]
var itemsImageFile = ["cart.png","clock.png","pencil.png"]
class TableViewController: UITableViewController {
//테이블뷰 아웃렛 변수
@IBOutlet var tvListView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
//바버튼으로 목록 삭제 동작 코딩하기
self.navigationItem.leftBarButtonItem = self.editButtonItem
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// 보통은 테이블 안에 섹션이 한개이므로 1리턴
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// 색션당 열의 개수는 items의 개수이므로
return items.count
}
//테이블 뷰 셀 아이디 적용
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath)
//셀의 텍스트 레이블에 앞에서 선언한 items을 대입
cell.textLabel?.text = items[(indexPath as NSIndexPath).row]
//셀의 이미지 뷰에 앞에서 선언한 itemsImageFile을 대입한다.
cell.imageView?.image = UIImage(named: itemsImageFile[(indexPath as NSIndexPath).row])
return cell
}
/*
// Override to support conditional editing of the table view.
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
*/
// 삭제하는 함수
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
//삭제하는 코드
items.remove(at: (indexPath as NSIndexPath).row)
itemsImageFile.remove(at: (indexPath as NSIndexPath).row)
tableView.deleteRows(at: [indexPath], with: .fade)
} else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
//영문으로 사용된 delete를 한글로 바꾸기
override func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
return "삭제"
}
// 할일목록 재정렬하기
override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
//이동할 아이템과 이미지 위치를 저장한다.
let itemToMove = items[(fromIndexPath as NSIndexPath).row]
let itemImageToMove = itemsImageFile[(fromIndexPath as NSIndexPath).row]
//이동할 아이템을 삭제한다. 이때 삭제된 아이템 뒤의 아이템들의 인덱스가 재정렬된다.
items.remove(at: (fromIndexPath as NSIndexPath).row)
itemsImageFile.remove(at: (fromIndexPath as NSIndexPath).row)
//삭제된 아이템을 이동할 위치로 삽입한다.
items.insert(itemToMove, at: (to as NSIndexPath).row)
itemsImageFile.insert(itemImageToMove, at: (to as NSIndexPath).row)
}
//뷰가 전환될때 호출되는 함수 , 리스트가 추가되어 main view로 돌아올 때 호출 된다. 추가된 내용을 리스트에 보여준다.
override func viewWillAppear(_ animated: Bool) {
//추가된 내용을 목록으로 다시 불러온다.
tvListView.reloadData()
}
//# 참고
//뷰가 보일때 호출되는 함수
// ViewDidLoad - 뷰가 로드 되었을 때 호출되는 함수, 뷰가 생성될때 한번만 호출 된다.
// ViewWillAppear - 뷰가 노출될 준비가 끝났을 때 호출되는 함수, 뷰가 노출될때마다 호출
// ViewDidAppear - 뷰가 완전히 보인 후 호출 되는 함수, 뷰가 완전히 보인후 호출
// MARK: - Navigation
//세그웨이 함수
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//세그웨이 이름이 sgDetail 이면
if segue.identifier == "sgDetail" {
let cell = sender as! UITableViewCell
let indexPath = self.tvListView.indexPath(for: cell)
let detailView = segue.destination as! DetailViewController
detailView.receiveItem(items[((indexPath as NSIndexPath?)?.row)!])
}
}
}
addcontroller
//
// AddViewController.swift
// Table
//
// Created by MacBookPro on 2017. 11. 27..
// Copyright © 2017년 MacBookPro. All rights reserved.
//
import UIKit
class AddViewController: UIViewController {
//추가 텍스트 필드
@IBOutlet weak var tfAddItem: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//추가하기 버튼
@IBAction func btnAddIten(_ sender: UIButton) {
items.append(tfAddItem.text!)
itemsImageFile.append("clock.png")
tfAddItem.text = ""
_ = navigationController?.popViewController(animated: true)
}
}
detailcontroller
//
// DetailViewController.swift
// Table
//
// Created by MacBookPro on 2017. 11. 27..
// Copyright © 2017년 MacBookPro. All rights reserved.
//
import UIKit
class DetailViewController: UIViewController {
//메인뷰에서 받을 택스트 변수
var receiveItem = ""
@IBOutlet weak var lbItem: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
//뷰가 노출될때 마다 표시
lbItem.text = receiveItem
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//main view에서 변수를 받기위한 함수 추가
func receiveItem(_ item:String) -> Void {
receiveItem = item
}
}
'ios 뽀개기 > ios앱' 카테고리의 다른 글
17 ios 스위프트 동영상 재생 구현 (0) | 2017.11.28 |
---|---|
16 ios 스위프트 오디오&녹음 어플 구현 (7) | 2017.11.28 |
14 ios 스위프트 네비게이션 바 (0) | 2017.11.27 |
13 ios 스위프트 tapview (0) | 2017.11.23 |
12 ios 스위프트 pageControl (0) | 2017.11.23 |
댓글