# iOS | Swift 26

iOS 지도 API 사용하기 (feat. Kakao Map)

Local API Kakao Map iOS API 가이드 1. 카카오 개발자사이트 에 개발자 등록 및 앱 추가하기 (내 애플리케이션 → 애플리케이션 추가하기) 2. iOS 플랫폼 추가하기 (추가한 앱 선택 → [플랫폼] – [iOS 플랫폼 등록] → 내 앱의 번들ID 등록하기) 3. Info.plist에 APP KEY 등록하기 - Key name: KAKAO_APP_KEY - Value Type : String - Value : 발급 받은 네이티브 APP KEY 4. SDK 를 다운받고 (위 Kakao Map iOS API 가이드 링크 참고) 압축을 풀어서 lib/DaumMap.embeddedframework 폴더를 애플리케이션 프로젝트로 복사하기 5. 라이브러리 파일을 추가하기 복사한 DaumMap.e..

iOS CoreLocation__ 위치 서비스 사용하기

CLLocationManager 는 Core Location Service를 설정하고 시작하고 중지하기 위해 사용합니다. 이를 통해서 다음과 같은 작업을 할 수 있습니다. 사용자의 현재 위치에서 크거나 작은 변화를 추적 나침반에서 방향 변경 추적 사용자 위치 기반 이벤트 생성 근거리 데이터 통신기기(Bluetooth Beacon)와 통신 Location manager 를 생성하면 시스템은 그 즉시 locationDidChangeAuthorization() 메서드를 호출하고, 또한 앱의 권한이 변경되면 delegate 는 모든 위치 및 방향과 관련된 업데이트와 이벤트를 처리합니다. 앱에 위치 서비스를 추가하고 앱을 실행하였을 때, 기기가 위치 서비스를 지원하는지 확인하고 원하는 위치 서비스를 구성하고 시작..

[Alarm] #+5. 알람 레이블 화면 기능 완성 및 알람 목록 정렬 버그 수정

개발 일자 : 2022. 3. 7 최근 기능 정의서를 좀 더 디테일하게 작성하다 보니 다 되었다고 생각됐던 알람 레이블 설정 화면에서 동작하지 않는 기능이 있었다. (기능 정의의 중요성을 깨닫는 순간,,,) 레이블에 텍스트를 입력하지 않고 넘기면 아무 텍스트도 넘어가지 않는 것이었다. 기존에 텍스트 필드의 text 가 nil 일 때 처리를 해두어서 그거면 되는건줄 알았다. 코드가 좀 마음에 안들긴 하는데 우선은 더 좋은 방법이 떠오르지 않아서… 전에는 viewWillAppear 함수에 처리해야하는 코드를 작성해두었었는데 키보드에서 완료 버튼을 누를 때도 동일한 코드가 동작해야했기 때문에 따로 함수로 분리하였다. private func saveAlarmLabel() { var labelText = labe..

[Alarm] 2. 알람 섹션 분리 및 정렬

개발 일자 : 2022. 1. 11 AlarmListVC 에서 섹션 분리 기존 알람 앱과 다르게 켜져 있는 알람과 꺼져있는 알람을 분리했다. 뭔가 켜져있는 것과 꺼져있는 것이 구분되어 있는 것이 보기 더 편하지 않을까 싶어서,, 그렇기 때문에 전체적으로 수정을 했는데, 헤더와 관련된 설정이 추가되었고, 그로 인해서 단순히 alarm 데이터를 받을 때, 단순히 인덱스 값을 받는 것이 더 번거롭다는 생각이 들어 indexPath 를 그대로 넘기기로 했다. AlarmManager 에서도 약간의 변화가 생겼는데 alarms 변수를 이차원 배열로 만들었고 (켜진 알람과 꺼진 알람을 구분하기 위함) sectionCount 속성과 특정 섹션의 항목 개수를 반환하는 함수를 추가했다. 알람 설정과 관련된 함수들의 인자를..

[Alarm] #+4. 알람 끄기 화면 구현

개발 일자 : 2022. 2. 15 조금 오랜만에 다시 개발을 시작하는데,, 굉장히 당황스럽게도 지난번에 레이블 옵션 화면을 만들었는데 키보드가 안올라온다…????? 그래서 혹시나 싶어서 핸드폰에 연결해서 실행했더니 정상적으로 동작함,, 검색해도 뭘 체크하라는데 그렇게 해도 안나와서,, 알고봤더니 키보드가 그냥 꺼져있었던것같은데,, 시뮬레이터 새로 열면 키보드가 꺼져있는건가,, 암튼 cmd + K 로 Toggle 을 켜주었음 (이게 버튼으로는 안눌림,,ㅜ 왜지…..) 그리고 또 핸드폰 연결해서 실행하니까, 원하는 노래가 안울리고 진동만 울리길래 또 왜 안되지 생각해봤더니 무음모드가 꺼져있어야 함 ㅋㅋㅋㅋㅋ;; 역시 실제로 사용할 수 있을만한 알람앱 만들기 위해서는 백그라운드에서 뭔가 사운드가 동작할 수 ..

[Alarm] #+3. 알람 레이블 화면 추가

개발 일자 : 2022. 2. 4 알람 레이블 옵션 기능 추가하기~ 방식은 사운드 옵션 화면과 거의 유사하다 일단 레이블 화면(AlarmLabelVC)을 만들어 줌 Segue 연결도 해주고 이름은 AlarmLabelSegue 라고 했음 AlarmDetailVC 에서 해당 segue 를 위해 prepare 함수에 해야할 일을 추가해줬고 해당 셀이 선택될 때 연결된 segue 를 실행하도록 추가하였음 (나중에 각각 상수값들은 따로 정의해야할 것 같다) if~else 구문보다 switch 문이 깔끔할 것 같아서 구조도 변경해주었음 Alarm 구조체에 label 프로퍼티를 추가해서 viewDidLoad() 에서 configure() 할 때 전달된 값을 alarmOptions 항목에 적용하도록 수정하였음 priv..

[Alarm] 1. 기본 알람 목록 및 추가화면 구현, AlarmManager, 삭제 기능 추가

개발 일자 : 2022. 1. 10 알람 앱을 만들기 시작한 이유는 다른 앱을 만드는 중이었는데,, 그 앱에 알람 기능을 넣는 방식을 고민하는 것이 넘 복잡하기도 하고 좀 더 한 기능에만 몰입해서 개발을 하고 싶어서 종종 그런 것들이 생길 때마다 MySamples 프로젝트에 추가하기 위해 만들기 시작했다. 알람이라는 기능이 단순히 말 그대로 ‘알람’ 앱에만 사용되지는 않는다. 생각보다 많은 앱들에서 ‘알림’을 주어야 하는 상황이 존재하고 그 방식이 비슷하겠다라는 생각이 들었다. 이 알람 앱은 가장 기본적인 ‘알람’ 앱을 구현해보고자 시작한 프로젝트이다. 이미 비슷한 화면들을 구현해왔기 때문에 첫날 구현한 화면들과 기능은 빠르게 추가된 것들이다 알람 목록 및 추가화면 구현 AlarmListVC 우선 간단하..

UITableView 편집 모드와 관련된 속성들

setEditing(_:animated:) func setEditing(_ editing: Bool, animated: Bool) : 테이블 뷰의 편집 모드 전환 및 해제 Parameters editing : true 이면 편집 모드로 전환, false 이면 편집 모드 해제. 기본 값은 false animate : true 이면 애니메이션과 함께 전환, false 이면 즉시 전환 editing 값이 true 로 설정된 채로 호출하면 테이블 뷰는 보여지는 각 UITableViewCell 객체에 setEditing(_:animated:) 를 호출하여 편집 모드로 전환함 editing 값이 false 로 설정된 채로 호출하면 편집 모드가 해제됨 편집 모드에서 테이블의 셀은 셀의 구성 방법에 따라 각 셀의 왼쪽..

[Alarm] #+2. 상세 화면에서 알람 삭제 기능 및 알람 시간 텍스트 표시 수정

개발 일자 : 2022. 2. 3 상세 화면에서 알람 삭제 기능 구현 지금까지는 알람 목록 화면에서 알람 삭제 기능만 구현해뒀는데 알람 상세 화면에서 삭제 셀을 선택했을 때, 알람 삭제 기능이 동작하도록 하기 위해 이전 AlarmSaving 프로토콜에 deleteAlarm() 을 추가했음 deleteAlarm() 을 추가하고 나니 AlarmSaving 이라는 이름이 좀 애매한 것 같아서 AlarmEditingDelegate 로 변경하였고 tableView(didSelectRowAt:) 메서드에 해당 셀이 선택된 경우 deleteAlarm() 을 호출하도록 하였음 첨에 이상한 값이 삭제되길래 봤더니 해당 메서드의 인자로 오는 indexPath 를 넘기고 있었다,, protocol AlarmEditingDe..

[Alarm] #+1. 알람 편집 모드 구현

개발 일자 : 2022. 2. 2 이전에는 스와이프 액션을 통해 데이터가 삭제되도록 구현했었는데 왼쪽 상단 바 버튼을 편집 버튼으로 사용하기로 결정 이전 푸시 알람 테스트로 사용했던 액션 함수명과 왼쪽 바 버튼 아이템을 편집 버튼으로 변경함 또한 편집이 완료되면 완료 버튼을 누를 수 있도록 UIBarButtonItem 타입의 바 버튼을 선언했고 스토리보드에 편집 바 버튼을 outlet 으로 가져옴 이 때, 일반적인 경우와 달리 weak 가 아닌 strong 참조로 가져왔는데 이는 edit 버튼이 done 버튼으로 바뀌게 되었을 때 edit 버튼이 메모리에서 해제가 되어 재사용할 수 없게 되기 때문 done 버튼을 누르게 되면 셀렉터를 통해 didTapDoneButton 함수가 실행되고 이 때 done 버..