iOS/SwiftUI 9

SwiftUI) `.fileImporter` 사용시 Error message.

The view service did terminate with error: Error Domain=\_UIViewServiceErrorDomain Code=1 "(null)" UserInfo={Terminated=disconnect method} 사용할 떄마다 위에 에러가 나온다. 스택오버 플로우에서는, Xcode에러라고도 하고, 권한 설정하고 사용해야한다고 하고 해결방법이라고 나온 방법들 다 해보았지만, 계속해서 에러 메세지는 나왔다. 결론적으론 에러가 나와도 사용하는데에는 문제가 없다.. https://www.reddit.com/r/swift/comments/11lzg0y/fileimporter_throwing_error/

iOS/SwiftUI 2024.02.14

SwiftUI `.fullScreenCover` `enum` 활용해 화면 전환

화면 전환을 하는 버튼이 여러개가 있을 떄, 계속 예상치 못한 화면으로 전환되어 정리하는 겸 기록해보자.. 먼저 fullScreenCover에 대해 알아보자. 가능한 한 많은 화면을 표현하는 modal 보기라고 설명되어 있는데, 보여줄 컨텐츠가 연관되어 있는 것이 아닌 새로운 컨텐츠일떄 사용할떄 많이 사용하지 않을까 싶다. 사용법은 간단하다. struct ContentView: View { @State private var isButtonTap = false var body: some View { VStack { Button { isButtonTap.toggle() } label: { Text("화면 전환!") } } .fullScreenCover(isPresented: $isButtonTap) { Te..

iOS/SwiftUI 2023.11.13

SwiftUI TextField

SwiftUI에서 입력가능한 인터페이스 구현시 TextField를 많이 사용합니다. 구현 방법 struct ContentView: View { @State var text = "" var body: some View { VStack { TextField(text: $text) { Text("PlaceHolder") } .padding() } Text(text) .padding() } } TextField에 입력 시 @State로 선언된 text에 업데이트 됩니다. 스타일링 명확하게 입력란을 알려주기 위해 테두리 효과를 적용하겠습니다. struct ContentView: View { @State var text = "" var body: some View { VStack { TextField(text: $..

iOS/SwiftUI 2023.11.10

SwiftUI ZStack 활용

SwiftUI의 ZStack을 이용해 현재 용량에 대한 정보를 표시하는 ProgressView를 구현해 보았다. 일단 완성된 View는 아래 그림이다. 지원하는 라이브러리나, 오픈소스가 있는 지 찾아보았지만, 찾을 수 없어 직접 만들어 보았다. 먼저 View 스택구조는 맨 밑의 배경을 담당하는 View 1개, 그리고 타입별 용량을 나타내는 View 한개씩 해서 총 6개의 View로 되어있다. 문제 만드는 과정에 문제점이 있었는데, ZStack으로 아무런 설정없이 구성하게 되면, View가 겹치기 떄문에, value 값을 어떻게 넣어야 되고, 또한 타입 별 value가 순서대로 보여지게 끔 되어야 했다.(순서가 보장되어야 한다. ex) 텍스트, 사진, 동영상 이러한 순서대로...) 정리하자면 2가지의 문제..

iOS/SwiftUI 2023.11.07

SwiftUI) NavigationBar 뒤로가기 버튼 안보이게 하기

네비게이션링크로 이동 시 자동으로 이전 화면의 이름이나 "Back"버튼이 나온다. 아래 화면 처럼 적당한 이름이면 이러한 동작이 좋을 수도 있지만, 만약 Navigation Title이 길거나, 알아보기 힘들다면? 오히려 깔끔하지 않을 수 있다. 안보이게 하는 방법으로는 .toolbarRole(.editor) 로 Navigaion Title의 범위를 크게 지정해주어서 안나오게 만들 수 있다.

iOS/SwiftUI 2023.06.12

SwiftUI) List NavigationLink item ">" 숨기는 방법

StackOverFlow에서 찾은 방법.. -> 하지만 기본적으로 List 생성 시 ">" 아이콘이 나온다. 해결방법 ZStack을 사용해서 위에 뷰를 덮어씌어주는 느낌으로 해결 기존의 NavigationLink Label은 보이지 않도록 opacity(0.0)으로 설정 struct ContentView: View { var test = [1, 2, 3, 4, 5, 6] var body: some View { NavigationView { List(test, id: \.self.description, rowContent: { element in ZStack(alignment: .leading) { Text("\(element)") NavigationLink { Text("\(element)") } lab..

iOS/SwiftUI 2023.05.31

SwiftUI alert in iOS14

SwiftUI 개발 중 최소타겟 iOS14버전으로 하는 중 alert이 필요한 상황이 있었다. 아래와 같이 .alert 코드 작성 시 아래에 있는 .alert만 호출이 된다. .alert(isPresented: $presentAlert) { Alert( title: Text("Title"), message: Text("Message") ) } .alert(isPresented: $presentAlert2) { Alert( title: Text("Title2"), message: Text("Message2") ) } 그래서 검색해보니 스택오버플로우에서 활용방안에 대해서 나와있었다. https://stackoverflow.com/questions/58069516/how-can-i-have-two-alerts..

iOS/SwiftUI 2023.01.17

@StateObject vs @ObservedObject 차이점

@StateObject 및 @ObservedObject 프로퍼티 래퍼는 SwiftUI 보기에 관촬된 개체의 변경 사항에 대한 응답으로 업데이트하도록 지시합니다. 두 래퍼는 비슷해 보이지만 SwiftUI에서 앱을 빌드할때 중요한 차이점이 있습니다. What is an @ObservedObject? @StateObject와 @ObservedObject의 차이점을 알아보기 전 @ObservedObject가 무엇인지 이해하는 것이 좋습니다. 두 프로퍼티 래퍼 모두 개체가 ObservableObject 프로토콜을 준수해야 합니다. 이 프로토콜은 객체가 변경되기 전 방출하는 게시자가 있는 객체를 나타내며 SwiftUI가 뷰를 다시 그리기를 그리도록 지시할 수 있습니다. ObservableObject를 준수하는 타입..

iOS/SwiftUI 2023.01.07