적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

Project/ToyProject_Couple App 12

[Swift iOS] tableView 안에 Date Picker 넣는 법?

달력에 일정을 추가하기 위해 Date Picker로 날짜를 선택할 수 있는 cell을 만들어보았다. cell 에 들어가는 item들을 배열로 설정할 경우, var items = ["날짜", "", "시간", "위치"] 이렇게 Date Picker가 들어갈 자리를 빈 cell 로 설정하여, 날짜 cell 을 터치 시 나타나고 default 값으로는 숨어서 보이지 않는 형태로 만들어 볼 것이다. 1. UIDatePicker() 추가하기 DatePickerCell을 UITableViewCell 클래스로 따로 만들어 넣어주는 방법도 있던데, 나는 섹션도 여러개고 행도 여러개이기 때문에 cell 마다 클래스를 따로 만들어주면 너무 복잡할 것 같아서 그냥 내부에서 설정해주었다. var datePicker = UID..

[Swift iOS] UIAlertController로 alert 창 띄우기

let alert = UIAlertController(title: nil, message: "내용을 입력해주세요", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) self.present(alert, animated: true) tableView에서 항목 추가를 위해 모달을 띄우고, 입력을 받아오는데 혹시나 입력값이 없는데도 save 버튼을 눌렀을 때 내용을 입력하라는 경고창을 띄워보았다. class AddListViewController: UIViewController { var inputText = UITextField() ... @objc func save(sender: ..

[Swift iOS] 입력값을 받아와 tableView에 띄우기 - 데이터 내부 저장 방법 AppDelegate

modal 창을 띄워 입력값을 받아와 tableview에 띄우고 싶었는데 안되더라. 데이터가 왜 넘어가지 않는 것이야!!!! 받아올 수 없는 데이터에 씁쓸함을 안고 검색도 해봤지만 해답을 찾지 못하고 도서관에와 책을 뒤적뒤적거리다가 발견. 해결 방법은 'AppDelegate' 파일에다가 데이터를 저장할 배열 변수를 프로퍼티로 정의하는 것!! 배열 변수를 AppDelegate 클래스에 저장하는 것은 [ 접근성 / 데이터 보존 / 일관성 ] 크게 이 세 가지 이슈 때문이라고 한다. 나는 그냥 모달이나 테이블 뷰가 있는 뷰 컨트롤러 클라스에 배열 변수를 생성해 저장하고 불러오고 그랬는데, 이렇게 저렇게 아무리 해봐도 입력된 값이 테이블뷰에 뜨지 않는 것이었다ㅠㅠ 그 이유는 뷰 컨트롤러는 생명 주기가 길지 않아..

[Swift iOS] Custom UITableView 만들기

테이블뷰 하나만도 커스텀하게 만들기 쉽지 않구나 하는 걸 깨닫게 되었다. 테이블 뷰 굉장히 만만하게 봤는데.. 너 만만하지 않구나? ㅎㅎ 1. 테이블 뷰 추가하기 2. extension으로 UITableViewDataSource, UITableViewDelegate 추가해주기 3. section 갯수, 각 section 당 cell 갯수, 높이 및 각종 속성들 추가 4. UITextField() 이용해서 사용자 입력 받아오기 5. UITableView 속 cell 내용들 추가 기본 테이블뷰 추가해 화면에 띄우기 import Foundation import UIKit class AddScheduleViewController: UIViewController { let tableView = UITableVie..

[Swift iOS] modal presentation style 모달로 화면 띄우기

1. 모달로 뷰컨트롤러 띄우는 법 2. 모달 스타일 설정 3. 모달 크기 변경 뷰컨트롤러로 화면을 이동하는 방법은 여러가지가 있겠지만 가장 많이 쓰이는 방법으로 크게 두가지를 꼽을 수 있다. 네비게이션 컨트롤러로 옆으로 넘겨주는 방법과 let vc = NavViewController() self.navigationController?.pushViewController(vc, animated: true) 모달로 화면을 아래에서 위로 띄우는 방법. let vc = ModalViewController() vc.modalPresentationStyle = .automatic present(vc, animated: true, completion: nil) 여기서 modalPresentationStyle 은 기본으..

[Swift iOS] UIImagePickerController로 사진첩에서 사진 가져오기

목표 : 라이브러리에서 사진을 가져와 배경화면에 띄우기. 가장 먼저 해야 할 일은 1. 리소스 접근 권한 설정 Info.plist 파일에서 Information Property List 에 새로운 항목으로 [Privacy - Photo Library Usage Description] 키를 추가 : 앱이 사용자의 카메라나 앨범 리소스에 접근하기 위해 필요한 권한. (카메라를 추가하고 싶다면 [Privacy - Camera Usage Description] 추가해면 된다.) 1. 사진첩을 띄울 UIButton() 만들기 2. 버튼 터치 시 실행될 uploadPhoto() 메서드 만들고 버튼 이벤트에 추가하기 3. extension으로 UIImagePickerControllerDelegate와 UINaviga..

[Swift iOS] Open Weather Map API 사용해 날씨 데이터 불러오기

OpenWeatherMap 사이트 : openweathermap.org/api 요기서 필요한 API를 가져올 수 있는데, 나는 현재 날씨를 받아오기 위해 Current Weather Data를 받아왔다가 아직 구현할 필요는 없기만 혹시나 추후 날씨 예보도 추가하고 싶을까봐 One Call API로 바꿨다. One Call API 에는 현재 날씨, 예보, 과거 데이터가 다 포함되어 있고, 원하는 데이터만 불러올 수도 있기 때문에 범용을 위해 이걸 사용하는 것을 추천. API call : " https://api.openweathermap.org/data/2.5/onecall?lat=37.5683&lon=126.9778&exclude=minutely,alerts&appid={API key}&units=met..

[Swift iOS] calculate date 날짜 계산하기

swift 내장 Calendar를 사용해서 날짜를 계산하는 법을 알아보자. 1. D day 계산법 2. 기념일 계산법 let calendar = Calendar.current let currentDate = Date() let dateFormatter = DateFormatter() var daysCount:Int = 0 func calculateDays() { dateFormatter.dateFormat = "yyyy-MM-dd" let startDate = dateFormatter.date(from: "2020-09-13") daysCount = days(from: startDate) let hundred = calendar.date(byAdding: .day, value: 100, to: start..

[Swift iOS] 캘린더 라이브러리 _FSCalendar 설치 및 사용하기

달력 기능이 필요해서 검색하다가 FSCalendar를 발견했는데, 나름 customizing 하기에도 좋아보이고 정보도 꽤 있는 것 같아서 이 라이브러리를 받아와 사용하기로 했다. 참고 : FSCalendar Github 1. Cocoapods를 이용해 터미널에서 설치 pod 'FSCalendar' 2. Calendar 추가 1) 스토리보드 혹은 xib 파일 사용 시 View를 추가 후 Custom Class를 FSCalendar로 설정해준다. 그리고 코드에 IBOutlet으로 연결 및 대리자 위임해주기 import UIKit import FSCalendar class CalendarViewController: UIViewController, FSCalendarDelegate, FSCalendarData..

728x90
반응형