[UIKit / Swift / iOS] 디버깅을 해보자. (TableView가 보이지 않는 문제)
개발일지2025. 1. 10. 22:31[UIKit / Swift / iOS] 디버깅을 해보자. (TableView가 보이지 않는 문제)

개요UIKit, 즉 코드베이스로 UI를 구현하고 있는데, 문제가 생겼다.TableView가 보여야 하는데, 아래 사진처럼 TableView가 보이지 않는다.그리고 TableViewCell에서 MockData가 보여야 하는데 보이지 않는다.MockData로는 A, B, C, D 등 간단한 알파벳을 넣었다.따라서 View Hierarchy을 사용해서 디버깅을 진행해보자.     전개먼저 좌측 하단(디버그 영역)에서 위와 같은 버튼을 찾아서 클릭해준다.이 버튼이 View Hierarchy 이고,View를 계층별로 나눠서 보여주는 기능이다.   그럼 왼쪽 그림과 같이 뷰가 계층별로 나뉘어서 보인다.오른쪽의 시뮬레이터 상의 화면과 비교해보자.오른쪽만 봤을 때는 아무것도 없는 백지로 나온다.하지만 왼쪽화면을 보면 ..

[iOS / Swift] UINavigationBar를 구현해보자.
OS/iOS2025. 1. 8. 22:25[iOS / Swift] UINavigationBar를 구현해보자.

UINavigationBar란UINavigationBar란, 화면 상단에 위치하는 네비게이션 바를 나타내는 UI 요소.UINavigationController 없이도 독립적으로 사용할 수 있지만, 일반적으로 네비게이션 흐름을 관리할 때,UINavigationController와 함께 사용된다.이 문서에는 UINavigationBar를 직접 생성하고 뷰에 추가하여 사용자 정의한 네비게이션 바를 구성한다.  UINavigationBar를 구현해보자.UINavigationController를 사용중이지 않은 경우 1. Navigation Bar를 생성2. Navigation Item을 생성3. Navigation Bar에 Item 추가 위의 세가지 과정을 거치게 된다. 1. NavigationBar 생성//N..

[Github] 깃허브 default branch 변경
개발일지2025. 1. 7. 23:12[Github] 깃허브 default branch 변경

개발을 하다보면, 주로 내가 사용하는 깃플로우는,기능별로, 혹은 담당 인원별로 브랜치를 만든다.해당 브랜치에서 작업이 완료되면, Pull Request를 작성하고, 과반수 이상의 승인을 받으면develop이라는 브랜치로 머지한다.그리고 개발이 끝났을때, main이라는 브랜치에 v1.0으로 런칭한다. 이때 편의성을 위해서 개발중에는 develop을 Default Branch로 설정하고, 개발이 완료되었을 때,Main을 Default Branch로 설정한다.해당 레포지토리에서 설정에 들어간다.그리고 왼쪽의 General에서, Default Branch저기에 나와있는건 현재 Default Branch.  그리고 그 옆 연필 부분을 누르면, Default Branch의 이름을 바꿀 수 있다.입력하는 칸이 나오기..

[iOS / Swift] Then 라이브러리
OS/iOS2024. 12. 27. 16:19[iOS / Swift] Then 라이브러리

본 글을 읽기 전에, 먼저 SnapKit에 대해서 읽고 오면 이해하기 쉽다. [iOS / Swift] 라이브러리 SnapKit이란?SnapKit이란?Swift로 작성된 오토레이아웃을 간단하고 직관적으로 설정할 수 있도록 도와주는 라이브러리이다.Apple의 NSLayoutConstraint를 사용한 코드보다 훨씬 간결하고 읽기 쉬운 문법을 제공하고quaker.tistory.com  Then이란?Then은 Swift 프로젝트에서 객체를 간결하고 가독성 있게 초기화 할 수 있도록 도와주는 경량 라이브러리이다.보통 객체를 생성한 후 여러 속성을 설정해야 할 때 사용된다.SnapKit과 같은 다른 라이브러리와 함께 사용할 때 유용하다.  설치방법CocoaPods등 다른 방법도 있지만, 본문에서는  SPM(Swif..

[Xcode 에러] the remote repository could not be accessed xcode
에러노트2024. 12. 26. 21:49[Xcode 에러] the remote repository could not be accessed xcode

에러 프로젝트에 라이브러리를 추가하던 중"the remote repository could not be accessed xcode" 라는 에러를 접하게 되었다.  이런식으로 지속적인 깃허브 토큰을 입력하라는 창이 떴다. 해결방안들은 여러개가 있다.  해결1. SPM 캐시 초기화Xcode에서 Product -> "Clean Build Folder..." 를 선택한다. 그럼 위와 같은 창이 뜨고 Clean을 클릭.  2. Repository URL 확인이런식으로 SPM에서 링크를 복사 붙여넣기하여 라이브러리를 추가할때,URL 마지막에 .git을 추가한다. https://github.com/SnapKit/SnapKit.git    3. 직접 작성하기ChatGPT나 간혹 복사하다보면 사람의 눈으로 봤을때는 정말..

[iOS / Swift] 라이브러리 SnapKit이란?
OS/iOS2024. 12. 24. 20:16[iOS / Swift] 라이브러리 SnapKit이란?

SnapKit이란?Swift로 작성된 오토레이아웃을 간단하고 직관적으로 설정할 수 있도록 도와주는 라이브러리이다.Apple의 NSLayoutConstraint를 사용한 코드보다 훨씬 간결하고 읽기 쉬운 문법을 제공하고 있다.코드베이스로 UI를 작성할때 매우 유용하며 주로 사용되는 라이브러리이다.  SnapKit의 설치방법이건 SPM(Swift Package Manager)를 이용한 설치 방법이다.다른 라이브러리를 추가할 때도 같은 방법으로 추가하면 된다.프로젝트를 클릭해주고,   좀 내리다보면, "Frameworks, Libraries, and Embedded Content"라는 탭이 있다.여기서 +를 눌러주고, 하단의 Add Other를 누른 후, Add Package Dependency 클릭.  그리..

[iOS/Swift] UITextField를 이용한 회원가입 기능 구현
개발일지2024. 12. 20. 20:56[iOS/Swift] UITextField를 이용한 회원가입 기능 구현

영화 예매앱을 구현하면서 회원가입 페이지를 구현하고 있었다. 이런 화면을 구현하고 있었다.원리로는 저 위의 5개의 UITextField들을 입력 -> 하단의 회원가입 버튼 클릭그럼 UserDefaults로 입력한 값들이 저장되게끔 코드를 작성했다. private let name: UITextField = UITextField().then { $0.placeholder = "이름을 입력해주세요." $0.font = UIFont.systemFont(ofSize: 15) $0.backgroundColor = .lightGray $0.textColor = .black $0.borderStyle = .roundedRect $..

[Swift / iOS] LaunchScreen 설정 (UIKit, Storyboard)
OS/iOS2024. 12. 16. 21:08[Swift / iOS] LaunchScreen 설정 (UIKit, Storyboard)

UIKit, Storyboard로 개발하면서 LaunchScreen을 설정해보자.(안드로이드에서는 Splash Screen이라고 부른다.) 생각보다 간단하다.SwiftUI가 아닌, Storyboard로 프로젝트를 생성하면, LaunchScreen.storyboard라는 파일이 생기게 되는데, 우리는 이것을 이용할 것이다. LaunchScreen.storyboard정적인 화면 단순히 이미지나 로고, Label 등으로 구성하려면LaunchScreen.storyboard라는 파일 안에, 이미지를 넣던, 단순 Label을 넣던 취향껏 구현해주면 된다.방법은 기존 Stroyboard로 UI를 구현할 때와 같은 방식이다. 단, 이렇게 구현하는 방식은 정적인 화면만 표시할 수 있다.동적인 화면, 애니메이션 등을 추가..

[Swift] Thread 1: "Invalid parameter not satisfying: [name length] > 0" 에러
에러노트2024. 12. 11. 15:58[Swift] Thread 1: "Invalid parameter not satisfying: [name length] > 0" 에러

함께 보면 좋은글 코드베이스 UI 작성을 위한 셋팅코드베이스 UI스토리보드나 SwiftUI를 사용하지 않고 코드로 직접 UI를 구현하는 것을 말한다. 장점협업을 위해 깃허브에 올렸을때 가독성이 좋고 매우 깔끔하게 보기 좋다는 장점이 있다. 단점quaker.tistory.com  발생위치AppDelegate.swift 파일Thread 1: "Invalid parameter not satisfying: [name length] > 0" 에러 발생 경위Storyboard 대신 코드베이스로 UI를 구현하려고 셋팅하였고, 첫 빌드시 발생함. 원인Info.plist 파일에서, main이라는 키워드는 삭제했지만, Stroyboard Name이라는 탭은 삭제하지 않았음.  해결Storyboard Name 탭 삭제. 저..

코드로 계산기 UI 만들기
개발일지2024. 11. 22. 11:39코드로 계산기 UI 만들기

개요UI를 코드로 구현하면서, 생각보다 제대로 잘 되지 않는 느낌을 받았습니다.구현하는 도중 문제가 발생했지만, 운이 좋게도 이번에는 하나의 스택뷰만 해결하면 같은 구조라 해결이 쉬웠고,그 해결 과정을 공유합니다. 발단UI로 코드를 구현하고 있었고, 아무래도 Stroyboard처럼 눈으로 실시간으로 보면서 하는게 아니다보니,그리고 내가 직접 UI들을 만지며 배치하는 것이 아니다보니, 아직 생각한 것만큼 자유롭게 배치하기는 조금 힘들었습니다. 코드로 가장 기본이 되는 view를 구현했을때 이러한 모습으로 구현되었습니다.왼쪽으로 치우쳐져 있고, 사이즈가 제대로 출력되지 않았습니다. 전개Trouble 1. let btn8 = UIButton().then { $0.setTitle("8", for: .nor..

image