일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Unicode
- Class
- Protocol
- 디자인패턴
- IOS
- type
- Method
- Swift
- Xcode
- Git
- 이니셜라이저
- Foundation
- init
- struct
- enum
- optional
- extension
- delegate
- 코딩테스트
- initializer
- Terminal
- String
- property
- interpace
- instance
- tuist
- UIKit
- url
- 스위프트
- initalizer
- Today
- Total
목록Swift (65)
아리의 iOS 탐구생활
Apple Developer Documentation developer.apple.com 새로운 ViewController 클래스를 만들게 되면 아래 prepare 메소드가 주석처리 되어있다. /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new..
Apple Developer Documentation developer.apple.com 값을 늘리거나 줄이는 컨트롤. # 화면에 Label과 Stepper 추가하기 라이브러리 창을 켜서 Label과 Stepper를 추가해준다. Label의 텍스트와 폰트 크기를 취향껏 조절해준다. 아래 예제처럼 Auto Layout을 설정해준다. Auto Layout을 설정하지 않는다면 화면크기가 달라질때마다 위치가 바뀔 수 있다. # @IBOutlet과 @IBAction을 설정하고 코드와 연결 Label과 Stepper를 코드에 연결하여 @IBOutlet 추가 마찬가지로 @IBAction 메서드도 추가해주자. Stepper를 동작할 때마다 Label의 텍스트가 변하도록 설정해준다. # 완성 # 주요 프로퍼티 살펴보기 ..
# ViewController의 생명주기란? 각각의 ViewController들은 생명주기란 어떤 것이냐면 말그대로 ‘보여졌다. 사라지는’ 주기를 이야기한다. 생명주기 관련 메서드들을 잘 활용하면 화면을 재구성하거나 할 때 유용하게 쓰이므로 잘 알아두는 것이 좋다. 정상적인 ViewController 생명주기를 요약하자면 Appearing 상태를 거쳐서 Appeared 상태가 진행되고, 만약 종료하려면 Disappearing 상태를 거쳐서 Disappeared 상태로 진행된다. 정상적이지 않은 등장하는 도중에 다시 퇴장되는 경우가 있는데 이럴 때는 Appearing 상태에서 Appeared상태로 가지않고 곧바로 Disappeared 상태로 가게된다. 사용자가 홈버튼을 눌러 앱을 백그라운드 상태로 보냈을 ..
Apple Developer Documentation developer.apple.com 계층적 내용을 탐색하기 위한 스택 기반 체계를 정의하는 컨테이너 뷰 컨트롤러. 여기서 스택기반이라고 하는 것은 한마디로 Stack을 쌓아가는 구조다. 간단한 예를 들어보면 크롬을 사용할 때 뒤로가기나 앞으로 가기를 눌러 전 화면에 접근을 할 수 있는데 이것 또한 스택구조로 이루어져 있다. Stack : LIFO(Last In First Out)로 역순 탐색을 위한 구조 Stack에서 Push : 데이터 쌓기 Stack에서 Pop : 데이터 빼기 (뒤로가기) # NavigationController 먼저 rootViewController로 설정해줄 컨트롤러를 누르고 Editor > Embed in > Navigatio..
# ViewController ViewController는 앱의 근간을 이루는 객체로 모든 앱은 최소한 하나 이상의 ViewController를 가지고 있다. 주된 역할은 화면 구성 요소들, 즉 뷰를 관리 하는거지만 화면과 데이터 사이의 상호 작용 관리까지 한다. 윈도우 객체로 부터 전달된 이벤트를 받아서 내부적으로 구현된 비즈니스 로직을 실행하고, 그 결과로 얻어진 데이터를 콘텐츠를 만들어 화면에 표현하는 등 모바일 애플리케이션에서 뷰 컨트롤러는 우리가 하는 대부분의 작업들의 중심에 있다. ViewController는 여러가지 종류가 있는데, ViewController, Navigation Controller, TableView Controller, TabBar Controller, Split View..
# 인터페이스 빌더에서 직접 연결하기 일단 2개의 View Controller를 준비한 후 ‘Go to B’ 버튼을 올려준다. 그리고 ‘Go to B’ 버튼을 선택 후 Ctrl 키를 누른채로 B View Controller로 드래그를 하면 연결할 수 있는 Segue의 종류가 뜬다. Segue로 Show를 선택하면 화살표가 하나 생기는데, 이게 Segue가 연결되었다는 의미이고, Segue를 선택한 후 Inspector에서 여러 설정을 바꿀 수도 있다. 결과 화면 이 예제에서는 Modal처럼 화면이 아래서 올라오는데, 옆으로 넘어가는 효과를 적용하려면 A ViewController를 Navigation Controller에 Embed 해주어야 한다. 직접 연결하는 방법은 ViewController 간의 상..
# IBAction 만들기 버튼을 Ctrl을 누르면서 코드쪽으로 드래그하면 된다. Name칸을 채워주고, Type을 UIButton으로 설정해준 뒤 Connect 버튼을 클릭해준다. 그럼 이러한 함수가 뙇! 생기는데 이 내부에다가 코드를 적어줄 것이다. ## Alert 제목과 메세지내용 만들기. let alret = UIAlertController(title: "알림", message: "알림창 내용", preferredStyle: .alert) 위와 같이 UIAlertController를 이용하여 파라미터를 채워준다. preferredStyle은 아래와 같이 두가지가 있다. Alert actionSheet ## Alert에 들어갈 액션버튼 만들기 위 사진과 같은 Yes, No 같은 버튼을 따로 구현해줘..
# Model 앱이 정확히 무엇을 할지 코딩하는 것이다. 비즈니스 로직을 담당하는 함수들이 정의되고, 처리되는 데이터(클래스, 구조체 등)와 내부 알고리즘이 정의된다. # View 사용자에게 말 그대로 보여지는 영역으로 볼 수 있다. Storyboard 파일을 비롯해서 인터페이스를 구축하는 영역으로 생각하면 될 것 같다. # Controller Model 과 View 사이의 다리라고 보면 된다. Controller는 Model이 가지고 있는 데이터를 어떻게 할 것인지 명령을 내린다. 그리고 이 명령을 토대로 사용자에게 보여지는 인터페이스 부분도 수정을 한다. 보통 여기서 @IBAction 함수들이 정의된다. 즉 사용자가 View를 통해 Interaction을 하면 Controller가 이를 control..
KVO는 A객체에서 B객체의 프로퍼티가 변화됨을 감지할 수 있는 패턴이다. Notification이 주로 Controller와 다른 객체 사이의 관계를 다룬다면 KVO는 객체와 객체 사이의 관계를 다루는데 적합하다. 메소드나 다른 액션에서 나타나는 것이 아니라 프로퍼티의 상태에 반응하는 형태이다. 객체의 프로퍼티의 변경사항을 다른 객체에 알리기 위해 사용하는 코코아 프로그래밍 패턴 Model과 View와 같이 논리적으로 분리된 파트간의 변경사항을 전달하는데 유용함 NSObject를 상속한 클래스에서만 KVO를 사용할 수 있다. 장점 두 객체 사이의 정보를 맞춰주는 것이 쉽다 New / old value를 쉽게 얻을 수 있다. KeyPath로 옵저빙하기 때문에 nested objects도 옵저빙이 가능하다..
싱글턴 객체중 하나이므로 이벤트들의 발생 여부를 옵저버를 등록한 객체들에게 Notification을 post하는 방식으로 사용한다. Notification Name이라는 Key 값을 통해 보내고 받을 수 있다. 장점 많은 줄의 코드가 필요없이 쉽게 구현이 가능하다. 다수의 객체들에게 동시에 이벤트의 발생을 알려줄 수 있다. Notification과 관련된 정보를 Any? 타입의 object, [AnyHashable : Any]? 타입의 userInfo로 전달할 수 있다. 단점 key 값으로 Notification의 이름과 userInfo를 서로 맞추기 때문에 컴파일시 구독이 잘 되고 있는지, 올바르게 userInfo의 value를 받아오는지 체크가 불가능 하다 추적이 쉽지 않을 수도 있다 Notifica..