본문 바로가기

Tech/iOS

(55)
[iOS] Day 17 - CollectionView tableView를 다 이해했다면, CollectionView..? 할만하다 tableView vs collectionView tableView의 row는 collectionView에서 item이다 -> numberOfItemSection, cellForItemAt tableView는 셀 간 간격을 띌 수 없지만 collectionView는 셀 간 간격을 띌 수 있다 collectionView의 크기를 계속 늘리게 된다면 어느 순간 셀이 중앙에 놓인다 -> 셀이 한개만 들어갈 수 있으므로 중앙으로 옮겨진다 (View의 크기를 넘어섰기 때문에 2개 이상이 못 들어온다고 판단) UICollectionViewFlowLayout collectionView에서 Layout을 변경하려면 필요한 타입 override..
[iOS] Day 16 - TableView(2) 새로운 개념 들어오긴 했는데... 배울수록 새롭다 ReloadData tableView의 셀의 데이터가 변동이 있을 때 ex) textField에서 문자를 입력했을 때 문자를 입력한 데이터가 reload를 하지 않는다면 변경된 내용이 반영이 안된다 즉 데이터를 업데이트하는 Code를 작성해야 한다 그래서 꼭 tableView.reloadData()를 실행해야한다 Extension Protocol - CaseIterable Enum을 배열처럼 활용할 수 있다 cell.textLable?.text = SeetingOptions.allCases[indexPath.section].rowTtitle[indexPath.row] Enum에서 Case 활용을 했을 때 보다 코드를 간결하게 줄일 수 있다. tableVi..
[iOS] Day 16 - TableView(1) 큰 대단원이 시작이 된 것 같다 새로운 개념으로 뛰어 들어가자 UITableView TableView는 반복되는 형식의 UI를 쉽게 만들 수 있는 특수한 View TableView에는 하나의 섹션 하나의 Cell이 위치한다 Section은 Cell 용도에 따라 나뉜다 Static Cell / Dynamic Prototypes TableView는 Static과Dynamic Prototypes로 나뉜다 Static Cell은 아이폰 설정 화면처럼 사용자에 따라 변함없는 View Dynamic Prototypes은 app상에서 사용자 데이터에 따라 다른 화면이다 NumberOfRowsInSection, CellForRowAt 새로운 File 생성시 TableView를 사용할 때 Subclass를 TableV..
[iOS] Day 15 - TableView 상에서 Switch 구현 일주일을 일요일 마다 세는 성격이라 일요일이 항상 힘들었는데 오늘 느낀 감정은 주말에 잠으로 풀충전해서 그런지 월요병 보다는 월요통이다.. 오늘도 달려보자 TabelView 상에서 Switch 구현 Storyboard에서 구현하면 되는거 아니야? 구현하려다 안됐다 -> 나중에 안 사실이지만 style을 custom으로 바꾸면 됐다 역시 거의 다 구현하구나 storyboard... storyboard 구현이 안되길래 코드에 구현해보았다 storyboard상에서의 완성된 화면이다 (tableView는 다 배운 후 2~3번 정도 걸쳐 포스팅 할 예정이다) 2번째 섹션에만 Switch를 구현하고 싶다 어떻게 해야할까? override func tableView(_ tableView: UITableView, ce..
[iOS] Day 14 - Extension 주말이 끝나간다 오늘도 달려보자 Extension Swift의 Extension 기능은 Class, Struct, Enum, Protocol 타입에 새롭게 기능적인 부분을 추가할 수 있는 문법 Extension 기능은 이전의 내부 소스를 접근할 수 없는 원본 타입들에 대해 새로운 기능을 부여할 수 있는 방법 - 연산프로퍼티, 연산타입 프로퍼티 추가 기능 - 인스턴스 메서드, 타입 메서드 - 새로운 Initializer 제공 - subscript 접근 방식 정의 - 중첩타입의 정의 및 사용 - Protocol 확장 extension UIViewController { func setBackgroundColor() { view.backgroundColor = .red } var testForExtension:..
[iOS] Day13 - ViewController 생명주기 주말 맞이 멍 때리는 중 주말이 오면 긴장이 풀려서 그런지 나른하다 오늘도 달려보자 UIViewController 생명주기 화면이 표시되기 전부터 제거된 후 까지의 생명주기를 의미한다 init viewController 객체가 생성됨 loadView View를 메모리에 로드 ViewDidLoad View의 Controller가 메모리에 로드된 뒤 호출 화면이 표시되기 전 초기화하는 작업 -> View의 로딩이 완료 되었을 때 시스템에 의해 자동으로 호출 리소스를 초기화하거나 초기화면을 구성하는 용도 화면이 처음 만들어질 때 한번 실행 처음 한번만 실행해야하는 초기화 코드 있을 경우 메소드 내부에 작성 viewWillAppear View가 표시되기 직전에 호출 화면 전환 시 View가 전환될 때 호출 vi..
[iOS] Day 12 - UserDefaults 요즘따라 침대가 너무 푹신하다 눕지말고 달리자 User Defaults 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성 앱에서 입력한 사용자의 데이터들이 영구적으로 남아있다 코드를 작성한 내용은 메모리 상에서만 유지된다 데이터가 영구적으로 남아있다 하더라도 앱이 삭제되면 데이터는 함께 사라진다 User Defaults에 값 저장하고 UserDefaults에 저장된 값 가져오기 //버튼을 누를 때 마다 label에 숫자 증가 @IBAction func countButtonClicked(_ sender: UIButton) { // UserDefaults에 저장된 값에 1 증가시키기 let currentValue = UserDefaults.standard.integer(forKey: "count")..
[iOS] Day 12 - Storyboard에서 화면 전환 설정 불금? 어림없지. 오늘도 달려보자 화면 전환 우리는 예전에 Segue를 연결하는 방법을 사용해 본적이 있다 스토리보드 상에서 왼쪽 연두색 버튼을 클릭한 후 우클릭을 누른 채 빨간색 뷰컨트롤러에 스크롤을 당겨서 놓으면 Action Segue 메뉴가 나타난다 빨간색 뷰컨트롤러에서 파란색 뷰컨트롤러로 똑같은 방법으로 Segue를 설정했다 어떻게 될까? 화면 전환은 가능하다 하지만 뷰위의 뷰가 쌓이고 뷰위의 뷰가 쌓이면서 무한으로 뷰가 쌓이는 현상이 발생한다 어떻게 해야할까? Navigation Controller를 활용하자 뷰컨트롤러를 선택하고 오른쪽 하단에 embeded 버튼을 눌러 Navigation Controller를 embeded in 하자 embeded in 한 후 다시 Segue 설정을 하면 Se..
[iOS] Day 11 - Storyboard 여러개 지정, Open Source Library in Xcode 날씨가 선선하니 코딩하기 좋은 밤이다 오늘도 달려보자 Storyboard 여러개 지정 많은 ViewController가 있어서 작업 해야하는 ViewController 찾기가 힘들다 이런 경우 Storyboard를 하나 더 생성하여 만들어 주자 1. cmd + n 새 파일을 만들자 Storyboard를 선택하여 만들자 2. Inspector 영역에서 EntryPoint를 설정 해주자 3. 실행을 하면 아직까지 Main의 Storyboard가 시뮬레이터에 보인다 어떻게 해야할까? -> Info에서 Storyboard Name을 시뮬레이터에 실행할 Storyboard Name으로 변경한다 4. Storyboard Reference를 통해 다른 파일에 있는 Storyboard를 연결할 수 있다 Library에..
[iOS] Day 10 - Tag 주어진 과제에 접근을 하고 수많은 시도 끝에 과제가 풀린 후 피드백을 받을 때 더 클린하고 빠르게 처리되는 코드를 보면 왜 나는 그렇게 짜지 못 했나 생각 말고 새로운 코드를 알게 되어서 행복하다 생각중이다 오늘도 달려보자 위의 영상처럼 여러개의 버튼이 동일한 작동을 할 때 사용하면 좋은 기능이다 Tag 지정 버튼을 누르고 Storyboard 상의 Inspector 영역에서 각 버튼 마다 태그를 지정해주자 0부터 8까지 지정해주었다 코드 입력해주기 // 감정 버튼을 IBOutlet으로 묶어줌 @IBOutlet var emotionButton : [UIButton]! // emotionCases(감정 상태 글자)와 emotionArrary(버튼을 누를 때 올라가야 할 숫자 (초기값 0)를 설정 var em..