iOS 312

Combine 프로젝트 만들기 순서

Combine 프로젝트 만들기 순서 1. Todos, Posts 모델 생성 1) Yarc(chrome-extension://ehafadccdcdedbhcbddihehiodgcddpl/index.html)에서 http://www.abc.com/123 이런식으로 url 넣고 GET 시도 -> response(응답값)을 복사. 2) QuickType(https://app.quicktype.io/) 에서 모델 생성 2. APIService 만들기 3. 위에서 만든 APISerivce를 ViewModel에서 구독 (sink) Combine은 구독(sink)을 통해야 이벤트가 들어오게 된다. import Foundation import Combine class ViewModel: ObservableObject { ..

SwiftUI) 간단한 테이블뷰 만들기

import SwiftUI struct ContentView: View { var body: some View { NavigationView { List(posts) { post in Text(post.title) } .navigationTitle("H4X0R News") } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } struct Post: Identifiable { //Identifiable: 순서 인식 가능하게 함 let id: String let title: String } let posts = [ Post(id: "1", title: "Hello"), Post..

토스트 메시지 띄우고 화면 전환 동시에 되는 경우

토스트 메시지 띄우고 화면 전환 동시에 시켜야되는 경우가 있는데, 이 때 Navigation controller push 로 화면전환을 하면, 토스트메시지 띄우는 시간이 매우 짧고, (토스트 메시지 내용이 긴 경우) 토스트 메시지 다 읽기도 전에 화면 전환이 되어서 UX/UI 적으로 이상하게 보이는 경우가 있다. 이럴 때 토스트 메시지 시간을 1초 정도로 두고, 화면 전환하는 시간을 1.5초 정도로 두면, 사용자 입장에서 토스트메시지가 길어져도 다 읽고 다음 화면으로 넘어갈 수 있다. [ Toast Message 띄우기 ] func showMessage(_ mesg: String, duration: TimeInterval = 1.0, completion: ((_ didTap: Bool) -> Void)?..

번역기앱) enum의 활용

한국어, 영어버튼을 유지보수성 있게 enum으로 정리. import UIKit import SnapKit enum Language { case ko case en case ja case ch var title: String { switch self { case .ko: return "한국어" case .en: return "영어" case .ja: return "일본어" case .ch: return "중국어" } } } final class TranslateViewController: UIViewController { private var sourceLanguage: Language = .ko private var targetLanguage: Language = .en private lazy var s..

iOS/iOS FastCampus 2023.06.20

Deep Link -target iOS 13 이하 대응

Deep Link -target iOS 11.0 (iOS 13 이하 대응 필요한 경우 참고) (DeepLink를 AppDelegate에서 구현하는 방법) 딥링크 정확히는 custom scheme 구현이 필요하게 되었다. 고객이 본사 서버에서 작업된 특정 url 을 문자로 받아 해당 url을 Safari 또는 네이버 등등에 복사 + 붙여넣기를 하면, 해당 앱의 특정화면이 실행되게끔 해야 하는 것이 미션. 1) 사전작업: 프로젝트 - Info 부분에서 아래 URL types scheme 추가 왜 필요한가? 고객이 DeepLinkingDemo:// ~~ 로 시작하는 url을 받아서 접속시 우리 앱이 딱 실행되어야 하기 때문 2) 본격 코딩 작업 회사 앱 버전 target이 iOS 11 이므로 이를 고려해야 하..