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 |
---|