swift - Custom TableViewController 예제
완성된 화면
스토리보드
[1] 데이터 모델
MemoData.swift
import Foundation
import UIKit
//AppDelegate.swift 파일을 열고 MemoData 타입의 변수를 프로퍼티로 정의합니다.
class MemoData{
var memoIdx: Int? //데이터 식별값
var title:String? //메모 제목
var contents:String? //메모 내용
var image:UIImage? //이미지
var regdate:Date? //작성일
}
[2] 커스텀 셀
MemoCell.swift
import UIKit
class MemoCell: UITableViewCell {
//글제목
@IBOutlet weak var subject: UILabel!
//글내용
@IBOutlet weak var contents: UILabel!
//날짜
@IBOutlet weak var regdate: UILabel!
//이미지
@IBOutlet weak var img: UIImageView!
}
[3]테이블뷰
MemoListVC.swift
import UIKit
class MemoListVC: UITableViewController {
//앱델리게이트 - 싱글톤
let appDelegate = UIApplication.shared.delegate as! AppDelegate
override func viewDidLoad() {
super.viewDidLoad()
print("MemoListVC - viewdidload")
}
//뷰가 화면에 출력되면 호출
override func viewWillAppear(_ animated: Bool) {
print("MemoListVC - viewWillAppear")
//테이블 데이터 리로드
self.tableView.reloadData()
}
//행 개수
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("MemoListVC - numberOfRowsInSection : cnt : \(self.appDelegate.memolist.count)")
return self.appDelegate.memolist.count
}
//개별행 구성
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("MemoListVC - cellForRowAt")
//memolist 배열 안에서 주어진 행에 맞는 데이터 꺼냄
let row = self.appDelegate.memolist[indexPath.row]
//이미지 속성이 비어 있고 없고에 따라서 프로토타입 셀 식별자 설정
let cellId = row.image == nil ? "memoCell" : "memoCellWithImage"
print("cellId : \(cellId)")
let cell = tableView.dequeueReusableCell(withIdentifier: cellId) as! MemoCell
//내용구성
cell.subject?.text = row.title
cell.contents?.text = row.contents
cell.img?.image = row.image
//Date 타입의 날짜를 포맷에 맞게 변경
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
cell.regdate?.text = formatter.string(from: row.regdate!)
return cell
}
//테이블 행을 선택하면 호출되는 메소드
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("didselectRowAt...")
//memolist 에서 선택된 행에 맞는 데이터 꺼냄
let row = self.appDelegate.memolist[indexPath.row]
//상세 화면 인스턴스 생성
guard let vc = self.storyboard?.instantiateViewController(identifier: "MemoRead") as? MemoReadVC else {
return
}
vc.param = row
self.navigationController?.pushViewController(vc, animated: true)
}
@IBAction func showAccount(_ sender: Any) {
print("계정보기")
//ProfileVC.swift 호출 - >
let uv = self.storyboard?.instantiateViewController(identifier: "_Profile")
uv?.modalPresentationStyle = .fullScreen
self.present(uv!, animated: true, completion: nil)
}
}
'아이폰 개발 > Swift' 카테고리의 다른 글
swift 계정 Profile 화면 디자인 예제 (0) | 2021.03.25 |
---|---|
swift UIImagePickerController 예제 feat : 메모 쓰기, 읽기 (0) | 2021.03.25 |
swift get post 호출 예제 (0) | 2021.03.24 |
swift keyChain 예제 (0) | 2021.03.23 |
swift Custom UI - 코드로 TabBar&Navigation Controller 만들기 (0) | 2021.03.23 |