Project/Memo

메모 작성 화면 구현 (메모 저장)

밤새는 탐험가89 2024. 1. 26. 01:42

 

 

 

메모 내용 및 이미지를 선택한 뒤에 저장 버튼을 눌렀을 때 메소드 구현

 

 

 

 

입력된 값을 저장하는 순서는 다음과 같음

 

1. 메모 내용이 입력되지 않았을 경우 대비, 경고창 띄움

 

 

경고창에 버튼을 추가하고 싶다면? ☆ 

원하는 버튼의 개수 만큼, UIAlertAction 클래스 객체를 생성 -> 등록 진행 

 

 

 

 

2. 데이터를 저장할 MemoData 객체 생성

제목, 내용, 이미지, 작성 시간을 MemoData 객체에 전달

 

 

 

 

 

3. 앱 델리게이트 인스턴스를 불러온 뒤, memoList 배열 변수에 MemoData 객체 추가 

 

 

 

UIApplication.shared는 UIApplication 객체의 인스턴스를 참조하기 위해 제공되는 타입 프로퍼티 

 

UIApplication 객체는 직접 인스턴스 생성 불가, 

시스템에 의해 생성된 유일 객체를 참조하는 것만 가능 

 

appDelegate를 AppDelegate 타입으로 캐스팅 하는 이유는 

 

UIApplication.shared.delegate는 UIApplicationDelegate 프로토콜 타입으로 객체 반환 

따라서 memoList 배열 변수를 사용하기 위해 AppDelegate 타입으로 타입 캐스팅 진행 

 

 

 

4. 메모 작성 화면을 종료, 이전 화면으로 돌아감 

 


네비게이션 컨트롤러의 화면 전환 중에 이전 화면으로 되돌아가기는 popViewController 사용 

 

 

 

만약에 memoList를 따로 변수로 빼낸다면?

 

 

var mList = appDelegate.memoList  => 이렇게 작성하면 안됨

 

memoList의 타입은 구조체 -> mList도 구조체 -> 값을 복사하여 전달 

 

이렇게 되면 mList에 데이터를 추가하면 이 값은 복사된 배열에만 추가 

memoList에는 반영되지 않음  

 

따라서 직접 memoList 속성에 입력할 것