Swift 47

[iOS ] 데이터 전달 : (3/5) NotificationCenter로 전달하기

문제 다양한 방법으로 데이터 전달하기 1. Property로 전달하기 2. DelegatePattern으로 전달하기 3. NotificationCenter로 전달하기 4. Closure로 전달하기 5. 장단점 정리 NotificatonCenter로 전달하기 3 - 1 화면 전환 시 데이터를 전달하는 데에 여러가지 방법이 있는데, 그 중 NotificationCenter를 사용해 데이터를 전달하는 방법을 알아보자. NotificationCenter는 알림 발송 매커니즘(notification dispatch mechanism)이다. NotificationCenter는 알림이 게시(post)되면 등록된 옵져버에 알린다(broadcast). 알림을 받은 옵져버는 미리 설정된 메서드를 호출해 작업을 수행한다. ..

iOS 2022.06.21

[ iOS ] 데이터 전달 : (2/5) DelegatePattern으로 전달하기

문제 다양한 방법으로 데이터 전달하기 1. Property로 전달하기 2. DelegatePattern으로 전달하기 3. NotificationCenter로 전달하기 4. Closure로 전달하기 5. 장단점 정리 DelegatePattern으로 전달하기 2 - 1 화면 전환 시 데이터를 전달하는 데에 여러가지 방법이 있는데, 그 중 Delegate Pattern을 사용해 데이터를 전달하는 방법을 알아보자. 2의 ViewController에서 Delegate 프로토콜을 선언해 화면 전환 버튼의 액션함수에서 방금 선언해준 Delegate의 메서드를 호출한다. 이 메서드의 구현은 1의 ViewController에서 이루어진다. 메서드 호출 시 데이터를 인수로 넘겨주고, 구현 부분에서는 매개변수를 원하는 곳에..

iOS 2022.06.20

[ iOS ] 데이터 전달 : (1/5) Property로 전달하기

문제 다양한 방법으로 데이터 전달하기 1. Property로 전달하기 2. DelegatePattern으로 전달하기 3. NotificationCenter로 전달하기 4. Closure로 전달하기 5. 장단점 정리 Property로 전달하기 1 - 2 화면 전환할 경우, 1의 ViewContorller에서 2의 ViewController의 프로퍼티에 데이터를 할당해 전달하는 방법이다. 데이터 할당은 보통 화면 전환 시 이루어지며, 그때 생성하는 2의 ViewController 객체를 활용한다. 먼저 1에서 데이터를 입력할 TextField의 아울렛 변수(contentTextField)와 화면 전환을 할 Button의 액션 함수(tapNextButton)를 정의한다. import UIKit class Pr..

iOS 2022.06.20

[ iOS ] cell 내 버튼 선택 이벤트 구현 (+ Delegate 패턴)

공부한 내용을 정리한 글입니다. 문제 사진 내 버튼 선택하기 1. cell 내 버튼 이벤트 발생시키기 UICollectionViewControllerDelegate의 collectionView(_:didSelectItemAt:) 메서드를 통해 collectionView Cell의 선택 이벤트를 처리할 수 있다. 하지만 이 이벤트는 cell의 이벤트를 의미하지 cell 내 버튼의 이벤트를 의미하지는 않는다. 우리는 버튼이 cell 내에 있다는 것을 알고 있어야 한다. collectionView(_:didSelectItemAt:) 델리게이트에 특정한 인덱스의 아이템이 선택되었음을 알린다. 버튼에 선택 이벤트가 발생하면 해당하는 액션 함수가 호출되므로, 액션함수 내에 사진을 선택하는 작업을 구현하면 된다. 하..

iOS 2022.06.14

[ iOS ] URL 이미지 받아오기 + Alamofire

문제 Alamofire를 사용해 URL에서 이미지 받아오기 Unsplash와 같은 Open API나 서버에서 사진을 받을 경우 URL을 UIImage로 변경하는 작업을 처리해야한다. 보통 Data(constentsOf:)를 사용하지만 공식문서에서는 URLSession 사용을 권장한다. 오늘은 URLSession을 기반으로 만들어진 Alamofire를 통해 URL에서 이미지를 받아오자. [ iOS ] URL로 이미지를 받아 올 경우 Data(contentsOf:)를 사용하면 안 되는 이유 공부한 내용을 정리한 글입니다. 문제 네트워크 기반의 URL 이미지를 받아올 때 Data(contentsOf:)를 사용해도 될까? 1. Data(contentsOf:) NSData(constentsOf:)는 주어진 URL..

iOS 2022.06.08

[ iOS ] URL로 이미지를 받아 올 경우 Data(contentsOf:)를 사용하면 안 되는 이유

공부한 내용을 정리한 글입니다. 문제 네트워크 기반의 URL 이미지를 받아올 때 Data(contentsOf:)를 사용해도 될까? 1. Data(contentsOf:) NSData(constentsOf:)는 주어진 URL로부터 데이터를 데이터 객체로 초기화하는 작업이다. 따라서 이 메서드를 사용해 URL로부터 이미지를 받아온다면 잘 작동한다. 하지만 해당 메서드의 공식문서에는 네트워크 기반의 URL의 경우 해당 메서드를 사용하지 말라고 명시되어있다. [ iOS ] NSData(contentsOf:) init(contentsOf:) 주어진 URL로부터 데이터를 데이터 객체를 초기화한다. Technology Foundation Declaration init?(contentsOf url: URL) Parame..

iOS 2022.06.07

[ iOS ] CollectionView 간격 조정하기

문제 가로 방향의 CollectionView에서 cell의 간격을 조정하기 CollectionView의 cell 간 간격을 설정해주기 위해서는 UICollectionViewDelegateFlowLayout 프로토콜의 메서드를 사용하면 된다. collectionView(_:layout:minimumLineSpacingForSectionAt:) 한 섹션의 연속적인 행 또는 열 사이의 간격을 지정한다. collectionView(_:layout:minimumInteritemSpacingForSectionAt:) 한 섹션의 동일 행 또는 열에서 아이템들의 간격을 지정한다. scroll Direction따른 메서드 사용 1. 가로 방향 스크롤일 경우, horizontally collectionView(_:layo..

iOS 2022.05.10

[ iOS ] isEnabled와 isUserInteractionEnabled 비교

공부한 내용을 글로 정리한 글입니다. 문제 isEnabled와 isUserInteractionEnabled는 무슨 차이가 있을까? 1. isEnabled 란? 해당 컨트롤이 활성화 상태인지 여부를 나타내는 Bool타입의 프로퍼티 UIController의 인스턴스 프로퍼티. UIController는 UIButton의 부모 클래스이다. true : 해당 컨트롤을 활성화한다. false : 해당 컨트롤을 비활성화한다. 활성화된 컨트롤은 사용자와의 상호작용을 할 수 있다. 2. isUserInteractionEnabled 란? 사용자 이벤트를 무시하고 이벤트 큐에서 제거할지 여부를 결정하는 Bool 타입의 프로퍼티이다. UIView의 인스턴스 프로퍼티. UIView는 UIController의 부모 클래스이다. ..

iOS 2022.04.12

[ iOS ] Present된 화면 내린 후 처음 화면으로 돌아가기 (popToRootViewController, present, dismiss)

공부한 내용을 정리한 글 문제 navigationController를 사용하다가 Present Modally를 한 경우 버튼 클릭 시 다시 처음 화면(RootViewController)으로 되돌아가기 A(navigationController) -push- B -Present- C C 가 Present된 Modal이기 때문에 그저 dismiss()메서드만 호출한다면 B 화면으로 돌아갈 뿐이다. 그렇다고 navigationController가 아닌 C 화면에서 UINavigaionController의 popToRootViewController()메서드를 사용할 수는 없다. 위 화면의 순서를 보면 A - B 는 NavigationController의 navigation Stack에 쌓인다. 따라서 popToR..

iOS 2022.04.12

[iOS] viewController Life Cycle 생명주기

공부한 내용을 정리한 글입니다. UIViewController는 뷰를 관리하거나 이벤트와 관련해 뷰에 응답하는 메서드들이 정의되어 있다. 이 메서드들은 view Controller에 의해 불러져야하는 순간에 자동으로 호출되기 때문에 변화에 대응할 수 있다. UIViewController를 상속받는 경우 이 메서드들을 오버라이드 할 수 있으며 이를 통해 뷰 변화마다 취할 액션을 설정할 수 있다. 뷰의 상태 Appearing : 뷰가 화면에 나타나는 중 Appreared : 뷰가 화면에 나타나는 것이 완료된 상태 Disappearing : 뷰가 화면에서 사라지는 중 Disappreared : 뷰가 화면에서 사라진 상태 LifeCycle 메서드 호출 순서 1. viewDidLoad() → 2. viewWill..

iOS 2022.03.20

[iOS] 앱 내에서 인스타그램 실행하기 (범용링크 Universal Link / UIApplication / URL scheme)

문제 앱 내에서 버튼을 클릭해 설정된 인스타그램 계정 프로필로 이동하기 @IBAction func tapBtnInstagram(_ sender: UIButton) { //1 let instagram = "https://www.instagram.com/lazy_cookie_lazy" //2 let instagramURL = NSURL(string: instagram) //3 if UIApplication.shared.canOpenURL(instagramURL! as URL) { //4 UIApplication.shared.open( //5 instagramURL! as URL, options: [:], completionHandler: nil ) } } 1. 원하는 버튼의 액션함수를 생성한다. 2. 인스타..

iOS 2022.03.13
728x90