티스토리 뷰

 

지난 번에 Alert창을 구현하기 위한 셋팅까지 끝났죠?

오늘은 진짜 alert를 구현해볼 차례입니다.

 

그런데, 바로 본론으로 들어가기에는 Alert가 너무 긴 놈이라

Alert 한정 그를 위한 글을 써봅네다,,,

 

제대로 된 공식문서를 보고 싶으시다면, 아래를 클릭!

https://developer.apple.com/documentation/uikit/uialertcontroller

 

Apple Developer Documentation

 

developer.apple.com

 


 

 

 

● 보여줄 메시지와 선택할 액션을 가진 액션시트/경고창을 설정하기 위해서 그를 사용하라고 하는군요.

● 그를 나타내기 위해서는 present(_:animated:completion:) 를 써주라고 하구요.

addAction(_:) 를 사용하여 유저가 응답할 수 있도록 경고창에 액션을 추가도 해야 하는군요.

 

 

 

 

 

 

 

그의 생성자메서드는 위와 같아요. 3개의 인스턴스 속성을 셋팅해주어야 해요.

 

 

1. 타이틀 (title)

경고창의 제목이에요. 사용자에게 경고창을 보여주는 이유를 잘 설명하고, 사용자의 주의를 끌만한 것으로 사용하라고 합니다.

 

이번 글에서 저는 "입력하라우"를 사용했습니다.

 

 

2. 메시지 (message)

경고창 제목 아래 들어갈 내용이며, 제목보다는 덜 중요한 것을 적으래요.

이 속성을 통해 사용자가 선택할 액션/경고창에 대한 추가적인 맥락을 설명하라고 합니다.

 

저는 "당신의 계정!"을 썼드래요.

 

 

 

3. 스타일 (preferredStyle)

경고창의 스타일입니다. modal alert와 action sheet 두 개 중 선택할 수 있어요.

저는 alert를 선택했어요.

 


 

 

그런데 위에서 사용자가 선택할 액션을 추가하기 위해서는 addAction메서드를 사용하라고 했었쥬?

우리가 보통 경고창에서 보는 "확인", "취소" 등의 버튼을 넣기 위해서는 addAction메서드를 사용해야 해요.

저는 왼쪽에 "취소" 오른쪽에 "확인"을 넣기 위해 2개의 액션을 만들었답니다.

 

 

 

 

그리고 이 addAction메서드는 UIAlertAction 구조체 타입이군요.

하나의 액션에 대한 버튼의 타이틀, 스타일에 대한 정보를 정하고, 사용자가 그 버튼을 탭했을 때 일어나는 핸들러를 설정하는 역할입니다. 

 

 

UIAlertAction 구조체 타입의 생성자를 볼까요?

 

 

1. 타이틀 (title)

버튼에 들어갈 타이틀입니다. 사용자의 언어에 맞는 값을 써야하며, 그 값은 nil일 수 없다고 하네요.

저는 "취소"와 "확인"을 각각 하나씩 만들었답니다.

 

 

2. 스타일 (style)

버튼에 적용될 추가적인 스타일링 정보입니다.

스타일은 열거형으로 정의가 되어 있구요, 총 3개의 default, cancel, destructive 케이스가 있습니다.

 

-default

가장 기본적인 액션 버튼의 스타일이에요.

"확인"을 구현할 때는 default로 설정했어요.

 

-cancel

취소하거나 액션으로 인한 어떤 변화도 없게 할 때 사용해요.

"취소"를 구현할 때는 cancel스타일을 이용했답니다.

 

-destructive

액션이 데이터를 변경하거나 삭제할 때 사용해요.

 

 

3. 핸들러 (handlr)

사용자가 액션을 선택할 때 실행할 일을 핸들러에 전달하면 됩니다.

저는 간단한 경고창이었기 때문에 아무것도 구현하지 않았습니다.

 

 


 

이제 Alert창과 그 밑에 딸려있는 액션 버튼에 대해 배웠다면,

이제 경고창을 띄우는 present 메서드를 알아볼게요.

 

 

첫 번째 파라미터로는 나타낼 UIViewController타입의 내용을 넣어요.

저는 제가 만든 Alert를 전달하면 되겠죠?

 

 

두 번째 파라미터로는 애니메이션의 여부를 Bool타입으로 넣어요.

저는 true를 전달했습니다.

 

 

세 번재 파라미터로는 프레젠테이션이 끝난 후에 실행될 블럭을 넣어줍니다.

저는 특별히 실행할 게 없으므로 여기서 nil로 전달!

 


 

이제 이 기본기를 바탕으로 Alert창 구현 2번째로 가봅니다!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크