본문 바로가기

프로그래밍 공부&정리/Swift

[iOS 연구] 대화상자, AlertController



AlertController는 대화상자를 만들기 위한 클래스이다.


다양한 상황에서 만들 수 있는데

보기 좋은 예시를 위해서

버튼을 클릭했을 때 대화상자가 보이도록 할 거다.

Main.StoryBoard에서 button 하나를 추가하고 메소드를 연결한다.

연결하는 방법은

만든 button을 우클릭해서 sent Event의 Touch Up Inside를 화면에 해당하는 클래스 코드에 드래그 하면 된다.


잘 모르겠다면 아래 동영상을 참고한다.



이 메소드 안에서 Alert 객체를 만들어주면 된다.


Alert를 만들기 전에 Alert의 구조에 대해서 볼 필요가 있다.


여기서

ViewController는 현재 클래스(화면)이고

AllertController는 대화상자 자체이다.

AlertAction은 대화상자 안에 있는 버튼을 의미한다.


만약 AlertAction 없이 AllertController만 만들어서 적용했다면

대화상자를 닫거나 대화상자를 이용해서 특정한 일을 수행하게 할 수 없다.


Alert의 구조는 위와 같은 포함관계를 가지고 있다.

그래서 AlertAction을 만들었다면 AlertController에 적용(반영) 시켜야 하고

AlertConroller는 ViewController(반영할 화면, 클래스)에 적용(반영) 시켜야 한다.

이 적용(반영)하는 과정을 생략하면

열심히 Alert를 만드는 작업을 했더라도

실제 화면에서 버튼을 아무리 열심히 클릭해보았자

작동하지 않는다.

보통 이 적용(반영)시키는 과정을 바인딩이라고 한다.


AlertController는 2가지 타입이 있다.

첫번째는 actionSheet 타입이고

두번째는 alert 타입이다.


이 2가지 타입은 enum으로 정의되어 있기 때문에

점을 찍어서 코드센서(자동완성 기능)를 작동시킬 수 있다.


actionSheet

actionSheet는 간단명료하게 말해 아래서 위로 올라오는 형태의 대화상자이다.

따라서 하단부에 존재한다.



alert

alert는 중앙에 뜨는 대화상자이다.

중앙부에 존재한다.



AlertAction에는 3가지 타입이 존재한다.

첫번째는 default

두번째는 cancel

세번째는 destructive 이다.


이 타입들 또한 enum으로 정의되어 있어

점을 찍어서 코드센서를 작동시킬 수 있다.

그리고 세 타입 모두 기본적으로 dismiss 기능(대화상자 닫힘)이 있기 때문에

AlertAction 버튼을 만들었다면 대화상자를 닫는 작업은 따로 안 해도 된다.

AlertAction 버튼들의 순서는 만든 순서대로 반영된다.


default

default는 ok sign이라고 보시면 돼요.

ok를 했을 때는

단순히 ok인 경우가 있고

ok하고 특정 작업을 수행하는 경우가 있다.

특정 작업을 할 때는 handler에 클로저를 작성하면 된다.

default는 여러 개를 만들 수 있다.


cancel

cancel은 취소 한다는 의미이다.

그래서 한 AlertController 당 1개만 만들 수 있다.

2개를 만들면 오류가 발생한다.

cancel은 alert 타입에서는 default와 굵기만 다르다.

(cancel이 두꺼운 글씨)

하지만  actionSheet 타입에서는 cancel 버튼이 따로 분리된다.

그래서 default 타입 버튼을 여러개 만들어야 할 경우에는

actionSheet 타입이 UI 상 더 보기 좋다.




destructive

destructice는 빨간색으로 버튼이 생성된다.

굵기는 default 타입과 같다.



'프로그래밍 공부&정리 > Swift' 카테고리의 다른 글

Swift 기초문법(수정중)  (0) 2019.02.07