1. 메인 스토리보드 -> TableView 추가 2. Cocoa Touch Class -> TableViewCell 추가 (Also create Xib file 체크) 3. Xib 파일에서 Cell Custom 4. Xib -> Custom Class 에서는 이미 Class가 연결돼 있어서 따로 안 건드려도 된다. 5. @IBOutlet // @IBAction 을 연결해주고 6. identifier 연결해주기 (제일 중요 ! ) 부가 설명을 하자면, xib파일에서 cell을 클릭해주고 Identifier 지정해주면 된다.. ! 7. 다시 메인 스토리보드에 가서 생성한 TableView를 뷰컨에다가 연결 8. UITableViewDelegate, UITableViewDataSource 채택 ! 9. 대리..
싱글턴 (Singleton) 싱글턴은 '특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체'를 의미한다. 싱글턴은 애플리케이션이 요청한 횟수와는 관계없이 이미 생성된 같은 인스턴스를 반환한다. 즉, 애플리케이션 내에서 특정 클래스의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있다. Cocoa 프레임워크에서의 싱글턴 디자인 패턴 Cocoa 프레임워크에서 싱글턴 디자인 패턴을 활용하는 대표적인 클래스를 소개합니다. 싱글턴 인스턴스를 반환하는 팩토리 메서드나 프로퍼티는 일반적으로 shared라는 이름을 사용합니다. FileManager 애플리케이션 파일 시스템을 관리하는 클래스입니다. FileManager.default URLSession URL 세션을 관리하는 클래스입니다. U..
Delegation Desgin Pattern 델리게이션 디자인 패턴은 하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 기능을 제공 델리게이션 디자인 패턴은 Foundation, UIKit, AppKit 그리고 Cocoa Touch 등 애플의 프레임워크에서 광범위하게 활용 주로 프레임워크 객체가 위임을 요청하며, 프로그래머가 작성하는 커스텀 컨트롤러 객체가 위임을 받아 특정 이벤트에 대한 기능을 구현 델리게이션 디자인 패턴은 커스텀 컨트롤러에서 세부 동작을 구현함으로써 동일한 동작에 대해 다양한 대응을 할 수 있게 한다. UITextFieldDelegate // 대리자에게 특정 텍스트 필드의 문구를 편집해도 되는지 묻는 메서드 func textFieldShouldBeginEditing(UIT..
"Sopt 28th 세미나 뷰의 전환" 부분에서 네비게이션과 모달을 다뤘지만 조금 더 자세하게 알아보겠다 ..! 네비게이션 컨트롤러는 컨테이너 뷰 컨트롤러로써 내비게이션 스택을 사용하여 다른 뷰 컨트롤러를 관리한다 ! 여기서 내비게이션 스택에 담겨서 콘텐츠를 보여주게 되는 뷰 컨트롤러들을 컨텐트 뷰 컨트롤러라고 한다. 내비게이션 컨트롤러는 두 개의 뷰를 화면에 표시한다. 하나는 내비게이션 스택뷰에 포함된 최상위 컨텐트 뷰 컨트롤러의 콘텐츠를 나타내는 뷰와 내비게이션 컨트롤러가 직접 관리하는 뷰 (navigation bar / tool bar) 가 있다. 추가로 내비게이션 인터페이스의 변화에 따른 특정 액션을 동작하도록 하기 위해 내비게이션 델리게이트 객체를 사용할 수 있다. 내비게이션 스택이란 ? 내비게..
Model-View-Controller MVC (Model-View-Controller) 디자인 패턴은 애플리케이션위 객체를 모델, 뷰, 컨트롤러의 세 가지 역할 중 하나의 역할로 할당한다. 이 패턴은 애플리케이션 내에서 객체가 수행하는 역할 뿐만 아니라 객체기 서로 통신하는 방식을 정의한다. 세 가지 유형의 객체는 각각 추상적인 경계에 의해 다른 객체와 구분되며, 그 경계를 넘어 다른 유형의 객체와 통신한다. 애플리케이션 내의 특정 MVC 유형을 한데 모아 "레이어" 라고 한다. 모델 객체 (Model Objects) 애플리케이션과 관련된 데이터를 캡슐화하고, 해당 데이터를 조작하고 처리하는 로직과 계산을 정리한다. 하나의 모델 객체는 다른 모델 객체와 일대일 또는 일대다 대응 관계를 맺을 수 있다. ..
디자인 패턴의 분류 1. 새로운 소프트웨어를 개발할 때마다 대부분 개발자는 어떤 클래스를 만들고 어느 시점에 객체를 생성하고 소멸시킬지, 데이터를 어떻게 받아서 처리할지, 구조 설계를 어떻게 할지 고민 2. 디자인 패턴 분류는 위와 같이 소프트웨어 코드를 작성할 때 자주 반복되는 특정 상황에서 설계를 용이하게 하며 코드의 재사용이 용이하도록 패턴을 정리해 놓은 것 GoF는 디자인 패턴을 목적과 범위로 분류 • 목적 패턴이 무엇을 하는지 정의하는 것으로 "생성", "구조", "행위" 중의 한 가지 목적을 갖습니다. ◦ 생성 (Creational Pattern) 객체의 생성 과정에 관여하는 패턴입니다. ◦ 구조 (Structural Pattern) 클래스나 객체의 구성을 통해 더 큰 구조로 만들 수 있게 해..
Frame & Bounds iOS의 좌표체계의 시작은 왼쪽 위부터 시작이다. 즉, 제일 왼쪽의 제일 위의 지점이 (0, 0)이다. 또, 수평축은 x로, 수직축은 y로 표현한다. 뷰의 프레임(Frame) 은 뷰의 크기와 위치를 슈퍼뷰의 좌표계를 기준으로 나타낸다. 바운드(Boubds) 는 뷰의 크기와 위치를 해당 뷰 자신의 좌표계를 기준으로 나타낸다. 뷰의 사각형을 정의하기 위해선 뷰는 어디에 그려져야 할지 알아야 하고, 위치로부터 어떤 크기로 그려져야 할지를 알아야함. 뷰의 프레임과 바운드는 CGRect라는 구조체를 통해서 표현된다. CGRect는 사각형의 크기와 위치에 대한 정보를 담고 있다. CGRect의 origin 프로퍼티는 CGPoint 타입으로 사각형의 시작점을 나타낸다. CGRect의 siz..
View hierarchy 뷰 계층구조와 서브뷰 관리 뷰는 자신의 콘텐츠를 보여주는 것과 더불어, 다른 뷰를 위한 컨테이너로써의 역할도 함. 하나의 뷰가 다른 뷰를 포함할 때, 두 뷰 사이에 부모-자식 관계가 생성 자식뷰는 subView로, 부모뷰는 superView 부모-자식 관계 형성은 애플리케이션의 시각적 모습과 동작 모두에 영향을 미침. 뷰 계층의 생성과 관리 코드 작성 서브뷰를 부모부에 추가하기 위해, 부모뷰의 addSubView(_:) 메서드를 호출 이 메서드는 해당 서브뷰를 서브뷰 목록의 마지막에 추가함. 부모뷰의 서브뷰를 제거하기 위해서는 서브뷰의 removeFromSuperview() 메서드를 호출 이 외에도 서브뷰를 부모뷰 목록의 중간에 삽입하기 위해 insertSubview(_:at:..
UIKit 프레임워크 UIKit은 iOS 애플리케이션 개발시 사용자에게 보여질 화면을 구성하고 사용자 액션에 대응에 관련된 다양한 요소를 포함 애플리케이션을 구현할 때 필수적인 부분이다. UIKit 소개 UIKit은 iOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리하는 프레임워크 UIKit 프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션의 화면을 구성하는 요소를 포함 UIKit 클래스 중 UIResponder에서 파생된 클래스나 사용자 인터페이스에 관련된 클래스는 애플리케이션의 메인 스레드(혹은 메인 디스패치 큐)에서만 사용 UIKit은 iOS와 ..
코코아 터치 계층 (Cocoa Touch Layer) iOS 애플리케이션 개발에 주 축을 이루는 개발환경으로, 애플리케이션의 다양한 기능 구현에 필요한 여러 프레임워크를 포함하는 최상위 프레임워크 계층이다. 코코아 계층은 macOS 애플리케이션 제작에 사용함 '코코아'라는 단어는 Objective-C 런타임을 기반으로 하고, NSObject를 상속받는 모든 클래스 또는 객체를 가리킬 때 사용 '코코아 터치' 또는 '코코아' 는 iOS 또는 macOS의 전반적인 기능을 활용해 애플리케이션을 제작할 때 사용하는 프레임워크 계층 '코코아 터치' 는 핵심 프레임워크인 UIKit와 Foundation을 포함