전체 글 259

[iOS] UIToolbar에서 UIBarButtonItem Alignment 조정하기, 양끝정렬로! programmatically

UIToolbar에서 UIBarButtonItem Alignment 조정하기 아래의 코드를 이용하여 배열에 공백을 주고싶은 부분에 추가하여 정렬하면 된다. let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil) 결과 func createDatePicker() { dDayField.textAlignment = .center // toolbar let toolbar = UIToolbar() toolbar.sizeToFit() // done button let doneBtn = UIBarButtonItem(barButtonSystemItem: .done, target: nil, actio..

[iOS] 다른 뷰컨의 함수 호출하기 : Call Another Viewcontroller's Function(NotificationCenter)

프로젝트 진행중 아기이름을 수정하는 기능 개발 중 다른 뷰컨의 함수를 호출하는 기능이 필요했다. 셋팅화면에서 babyName을 수정했을 때 발생하는 이벤트는 다음과 같다. 1) textField에 입력한 데이터 firestore에 update 2) 메인뷰컨의 아기이름 레이블에 firestore데이터 한번 더 조회 get 해서 업데이트해주기(변경된 아기이름 반영) iOS 이벤트 전달은 아래의 3가지로 구현할 수 있는데. - 컴플리션 블럭 클로저 - 프로토콜 델리게이트 - 노티피케이션센터 2)번 진행시 notificationCenter를 아래와 같이 활용하였다. 메인뷰컨 // import 아래에 상수로 이름 구현 let notificationName = "updateMainViewNotification" v..

[iOS] 설정화면 -> 설정 디테일 화면 구현 방법(tableView)

설정화면 구현시 궁금한 점 위 인스타그램 설정화면 처럼 1) 테이블뷰에서 이름설정, 생년월일 설정, 로그아웃 설정을 할 때, 해당 row 선택시 각 테이블뷰의 indexPath를 알아내서 서로 다른 뷰컨으로 보내는 것이 일반적인가? 2) 혹은 같은 뷰컨으로 보내지만, 하단의 내용만 달라지게 하는 것인가? => 일반적으로는 1)으로 화면마다 하나씩 뷰컨을 따로 만듬! + didSelectRowAt에서 선택한 indexPath 정보를 기반으로 다른 뷰컨으로 보내는 방법은 무엇인가? extension SettingViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexP..

[iOS] 디자인패턴 : MVVM

디자인패턴 왜 필요한가? - 객체지향 설계에서 변화를 최소한 줄여줄 수 있는 기술을 제공한다. - 새로운 기능이 추가되고 성능을 최적화할 시에 버그 등, 의도치 않은 결과를 불러일으킬 확률을 최소화 한다. - 유지보수가 용이한 소프트웨어를 만들 수 있다. (다른 사람이 작성한 코드를 더 쉽게 이해할 수 있다.) - 공용어의 힘을 사용할 수 있다. “자, 나는 broadcast라는 클래스를 만들었어. 이 클래스는 모든 객체가 이 클래스를 예의 주시하고 있지. 언제라도 새로운 데이터가 이 클래스로부터 만들어지면 모든 리스너가 이 메시지를 받아. 가장 멋진 점은 리스너가 broadcast에 어 때이든지 참가할 수 있고 빠질 수 있다는 거야.” 아니면, “자, 난 broadcast 클래스를 옵저버 패턴으로 만들..

[iOS] 기본 개념 정리 #9 : FireStore 적용 / 데이터 추가

* iOS 개인 프로젝트 시작 전 기본 개념 복귀 차원으로 내용을 정리합니다. messageTextfield.text 와 Auth.auth().currentUser 가 둘 다 nil이 아니면 각 messageBody와 messageSender에 담 내부 코드를 실행한다는 의미임. Auth.auth().currentUser?는 로그인한 유저가 있을 경우 정보가 나오고 아니면 nil이 찍힘 FireStore 데이터 추가 데이터 딕셔내리 만들고, error completion block에 print 찍어보기 에러 해결 [Firebase/Firestore][I-FST000001] Write at users~~failed: Missing or insufficient permissions. 규칙 => allow r..

[iOS] 기본 개념 정리 #8 : UITableVieCell, Cell.xib

* iOS 개인 프로젝트 시작 전 기본 개념 복귀 차원으로 내용을 정리합니다. Customizing Cells in a TableView using a .xib File View폴더에 생성한다 우측 클릭 - New File - Cocoa Touch Class - [subclass of] UITableViewCell Also create XIB file / Swift로 체크 및 설절하고 Targets에 프로젝트 체크 필수 Nib은 old name for the xib! UITableViewCell을 디자인 해보자 xib 파일에 라이브러리 - UIView 추가 인스펙터에서 백그라운드 변경 라이브러리 - Label 추가 라이브러리 - UiImageView 추가 label과 UiImageView 추가한 후 ho..

[iOS] 기본 개념 정리 #7 : Static Keyword / TableView / TableViewCell / UITableViewDataSource / UITableViewDelegate

* iOS 개인 프로젝트 시작 전 기본 개념 복귀 차원으로 내용을 정리합니다. Using a Constants File and Understanding the static Keyword String으로 만들면 오타를 만들기 쉽다. String으로 계속 타이핑하기보다 constant파일로 만들어서 코드로 타입하게 한다. swift 파일 만든다. struct Constants { } 아래처럼 stuct 내부에 static keyword를 만든다. static은 let을 constant데이터 타입으로 만들어줌 => Constants 객체를 만들어주는게 아니라 가져오는 것임 static let을 사용하면 struct 객체를 만들 필요가없이 바로 사용할 수 있다. 아래의 예시를 보자. static let을 선언해..

[iOS] 기본 개념 정리 #6 : Firebase/Auth 회원가입, 로그인, 로그아웃, 네비게이션바에서 back 버튼 없애기

* iOS 개인 프로젝트 시작 전 기본 개념 복귀 차원으로 내용을 정리합니다. Adding Firebase to your Project Firebase 로그인 대시보드에서 iOS 추가 설명대로 진행하면 됨. 단, podfile에서 내가 사용할 firebase를 찾아서 설치하기 Auth: 회원가입 로그인 기능 / Firestore 데이터베이스 설치 회원가입하고 파이어베이스로 보내서 확인하고 바로 채팅 뷰컨으로 보내기 로그인 가능할 경우 파이버에스에서 확이낳고 바로 채팅 뷰컨으로 보내기 회원가입 파이어베이스 대시보드 - authentification - 사용할 인증 체크온 create new user하기 레지스터 버튼 누르는 IBAction에 아래 코드 삽입 import Firebase / email과 pa..

[iOS] 기본 개념 정리 #5 : 네비게이션 스타일 Segue, 패키지매니저 CocoaPods, Podfile

* iOS 개인 프로젝트 시작 전 기본 개념 복귀 차원으로 내용을 정리합니다. 테이블 뷰와 세그웨이 테이블뷰 메일 앱, 문자메시지, vertically stacked cells 형태면 테이블뷰이다. 버튼 + 컨트롤 + 목적지 뷰컨에 놓으면 세그웨이 가능 모달로 세그웨이 하는게 아니라 네비게이션으로 하는 법? first view controller 즉 루트 뷰컨으로 누르고, 메뉴에서 에디터, 임베디드, 네비게이션 컨트롤러를 누르면 세그웨이가 네비게이션이 됨 Navigation은 팬케익 stack과 같음 register이 되면 챗으로 감 login이 되면 챗으로 감 register와 login이 성공해야 다음으로 세그웨이가된다. 로그인 -> 챗 / 회원가입 => 챗 : 둘다 세그웨이 identifier가 필..

[iOS] 기본 개념 정리 #4 : DarkMode, UITextFieldDelegate, Protocol, Delegate Design Pattern

* iOS 개인 프로젝트 시작 전 기본 개념 복귀 차원으로 내용을 정리합니다. DarkMode SF Symbols iOS 13 부터 다크모드가 사용가능하다 심볼이나 텍스트를 시스템 컬러로 사용하면 다크모드 사용이 가능하다. 만약 커스텀 컬러를 원한다면? Assets 에서 Color Set을 추가하고 라이트모드, 다크모드일 시에 컬러를 커스텀으로 설정가능 커스텀 컬러는 색상 선택 시 팔레트에 저장을 해야한다. vector이미지를 사용시 Assests에서 이미지 클릭 후 인스펙터에서 설정해줘야할 것 벡터이미지 사용시(PDF등) Preserve Vector 체크해주고 인스펙터에서 single scale로 설정 Appearance에서 Any, Light, Dark로 바꾸면 다크모드 라이트모드도 개별로 설정가능 ..