ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] 4-5주 차 미션
    iOS/UMC 2022. 10. 31. 23:13

     

     

     

    4주 차 미션

    ✅ TableView를 이용하여 메모장 구현하기


    먼저 필요한 ViewController 파일을 생성해준다.

     

     

     

     

    TableView DataSource와 Delegate 프로토콜을 채택하여 필요한 코드를 작성해준다.

    UITableViewDelegate

    - 테이블 뷰에서 section의 header, footer를 관리하고 셀을 삭제하거나 위치를 바꾸고 그 외의 다른 작업을 수행하기 위한 메서드를 제공한다

    - 테이블뷰의 시각적인 부분을 수정해주고, 테이블 뷰의 개별 행 편집 등을 도와주는 역할을 한다

     

    UITableViewDataSource

    - 테이블 뷰의 셀에 사용되는 데이터를 관리하기 위한 메서드를 제공한다

    - 테이블뷰를 생성하고 수정하는데 필요한 정보를 테이블뷰 객체에 제공하는 역할을 한다

     

     

     

     

        // Create new note
        @IBAction func didTapNewNote() {
            guard let vc = storyboard?.instantiateViewController(identifier: "new") as? EntryViewController else {return}
            vc.title = "New Note"
            vc.navigationItem.largeTitleDisplayMode = .never
            vc.completion = {noteTitle, note in
                self.models.append((title: noteTitle, note: note))
                self.navigationController?.popViewController(animated: true)
                self.label.isHidden = true
                self.table.isHidden = false
                
                self.table.reloadData()
            }
            navigationController?.pushViewController(vc, animated: true)
        }

    새로운 메모를 작성할 때 필요한 코드를 구현한다

    ✨ EntryViewController 코드

    //
    //  EntryViewController.swift
    //  Week4-project
    //
    //  Created by yeonsu on 2022/11/02.
    //
    
    import UIKit
    
    class EntryViewController: UIViewController {
    
        @IBOutlet var titleField: UITextField!
        @IBOutlet var noteField: UITextView!
        
        public var completion: ((String, String) -> Void)?
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            titleField.becomeFirstResponder()
            navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Save", style: .done, target: self, action: #selector(didTapSave))
        }
        
        @objc func didTapSave() {
            if let text = titleField.text, !text.isEmpty, !noteField.text.isEmpty {
                completion?(text, noteField.text)
            }
        }
    }

     

     

     

     

            let model = models[indexPath.row]
            
            // Show note controller
            guard let vc = storyboard?.instantiateViewController(identifier: "note") as? NoteViewController else { return }
            vc.navigationItem.largeTitleDisplayMode = .never
            vc.title = "Note"
            vc.noteTitle = model.title
            vc.note = model.note
            navigationController?.pushViewController(vc, animated: true)
        }

    작성한 메모를 확인할 때 필요한 코드를 구현한다.

    ✨ NoteViewController 코드

    //
    //  NoteViewController.swift
    //  Week4-project
    //
    //  Created by yeonsu on 2022/11/02.
    //
    
    import UIKit
    
    class NoteViewController: UIViewController {
    
        @IBOutlet var titleLabel: UILabel!
        @IBOutlet var noteLabel: UITextView!
        
        public var noteTitle: String = ""
        public var note: String = ""
        
        override func viewDidLoad() {
            super.viewDidLoad()
            titleLabel.text = noteTitle
            noteLabel.text = note
        }
    }

     

     

     

     

     

     

    Cell을 왼쪽으로 슬라이드하면 나타나는 delete 버튼을 구현하는 코드이다.

     

     

     

     

    최종 실행 화면

     

    5주 차 미션은 어플리케이션을 실행할 때 나타나는 로딩 애니메이션을 Lottie로 구현했다!

     

Designed by Tistory.