250x250
KemiKIM
29 to iOS
KemiKIM
GitHub
Loading data ...
  • 분류 전체보기 (41)
    • 지금 : 세상에서 가장 간단한 메모 앱 (1)
    • iOS (22)
      • Swift (4)
      • Xcode, UI (7)
      • And (9)
      • 이것이 삽질이다. (2)
    • other (18)
      • Error Solution (8)
      • a Little Tip (5)
      • Mac Start Setting (5)
    • Project (0)
hELLO · Designed By 정상우.
KemiKIM

29 to iOS

Alert Controller 사용하기
iOS/Xcode, UI

Alert Controller 사용하기

2023. 1. 19. 12:19

(Macbook Air M1 8-256 Monterey 12.6.2 Xcode 13.4)

 

 

Why?

 

 

매주 스터디에서 주제를 정해서 그 주제에 대한 발표를 진행하고 있는데,

이번에 ' Alert Controller '를 맡게 되었습니다.

그래서 이번 포스팅에서는 Alert Controller 사용에 대해 알아보겠습니다.

 

 

 

 

크게

 

(1) sheet 방식의 차이

 

(2) style의 차이

 

(3) 재사용성

 

(4) Custom Alert Controller

 

 

 

순으로 작성되었습니다.

 

 

 

 


 

 

Alert Controller

 

 

swift에서 기본으로 제공하는 UIAlertController을 사용하는 것을 의미합니다.

 

 

 

swift에서 alert controller를 사용하는 순서는 다음과 같습니다.

 

(1) UIAlertController를 상수에 선언

(2) UIAlertAction을 상수에 선언

(3) UIAlertController를 선언한 상수에 .addAction으로

UIAlertAction을 선언한 상수를 넣어주기

(4) present를 통해 나타내기

 

 

 

XCode에서 Alert Controller을 사용하려면,

첫번째로 UIAlertController를 상수에 선언해야 합니다.

 

 

근데, uialert까지만 치시면

하단에 5가지의 목록이 나타납니다.

 

말씀드린 UIAlertController와 UIAlertAction 말고도,

UIAlertView, UIAlertViewStyle, UIAlertViewDelegate의 Method들을 볼 수 있는데요.

 

 

 

이 Method들은 Swift 2.2 Version 이하

iOS 8, 9  이하 때 알람을 만들 때 사용하던 것이여서

지금은 거의 사용을 하지 않는다고 합니다.

 

 

 

 

 

 

 

 UIAlertController의 파라미터를 보시면,

 

()

coder

nibName: bundle

title: message: preferredStyle

 

로 구성되어 있습니다.

 

 

 

nibName: bundle 파라미터는

관련내용이 많이 나오지 않아 사용사례를 찾기가 좀 어려웠습니다.

 

개인적인 추측으로는 nibfile을 생성해 추가하는 것으로 보이는데,

사실.. 이렇게 하는 것보다 xib을 만들어서 추가하는게 더 효율적이기 때문에

크게 사용하지는 않는 것으로 보입니다.

 

 

 

 

주로 사용되는 것은

title: message: preferredStyle: 파라미터이기 때문에

조금 더 살펴보자면,

 

 

 

 

 title과 message는 string을 받는 부분이고, 

preferredStyle부분에서 .alert 과 .actionsheet 2가지 방식으로 나뉘게 됩니다.

 

 

 

 

 

 


 

 

 

(1) sheet 방식의 차이

 

sheet 방식에 따라 Alert Controller 창이 다르게 나타납니다.

 

 

 

 

 

 .alert

View 중앙에 나타납니다.

 

 

 

 .actionsheet

View 하단에서 올라옵니다.

 

 

 

상황에 맞게 사용하시면 될 것 같습니다.

 

 

 

 

 

 

 

 


 

 

 

(2) style

 

 

 

UIAlertAction을 상수에 선언하고 UIAlertController에 추가해줘야합니다.

 

UIAlertAction은 title과 style, 그리고 handler 파라미터를 가지고 있습니다.

 

 

title은 String이며,

style은 3가지로 나뉘어져 있습니다.

 

.destructive, .default, .cancel

 

 

 

.destructive: text를 빨간색으로 변경해줍니다.

.default, .cancel: text가 기본 색상인 파란색으로 변경됩니다.

 

 

.alert   sheet방식에서는 위와 같이 적용되지만,

.actionsheet   sheet방식에서는 .default, .cancel가 조금 다르게 적용됩니다.

 

 

 

 

(.actionsheet)

.default

합쳐집니다.

 

 

 

(.actionsheet)

.cancel

하단에 버튼이 고정됩니다.

 

 

 

 

 

 

 

UIAlertAction 마지막 파라미터인 handler는

상황에 따라 작성유무가 달라지기 때문에 상황에 맞게 구현하시면 될 것 같습니다.

(즉, 생략가능!)

 

 

이후 addaction으로 추가해줍니다.

 

 

 

 

 

최종적으로 사용하기 위해,

present을 통해 나타내주면 마무리됩니다.

 

 

 

 

 

 


 

 

 

 

(3) 재사용성

 

1.

보통 함수내부에 선언한 뒤 필요한 곳에 사용하는 것이 대표적이며,

 


2.

많이 사용하는 경우

swift file을 하나 생성한 뒤,

UIViewController Extension에 추가해주면

다른 곳에 작성할 필요없이,

필요할 때마다 꺼내서 사용할 수 있습니다.

 

 

 

 

 

 

 


 

 

 

(4) Custom Alert Controller

 

 

기존의 제공되는 알람 컨트롤러가 싫고,

보통 본인이 원하는 디자인의 알람컨트롤러를 생성하고 싶다면,

 

 

UIView, UIViewController를 새로 생성해서

사용하시는 것밖에 없습니다.

 

 

 


 

 

 

 

오류가 있거나, 피드백이 있다면 언제든지 댓글로 알려주세요!

감사합니다 :)

'iOS > Xcode, UI' 카테고리의 다른 글

Notification(1) - NotificationCenter 사용하기  (0) 2023.01.22
present closure처럼 pushViewController로는 쓸 수 없는걸까?  (0) 2023.01.06
TableView Top(header) Padding 제거  (0) 2022.10.22
Protocol과 Delegate Pattern을 이용해 Data를 가져와 표시하는 화면 구성하기. +체크표시 활성화하기  (1) 2022.10.05
Protocol과 Delegate Pattern을 이용해 Data를 가져와 표시하는 화면 구성하기.  (1) 2022.09.21
    'iOS/Xcode, UI' 카테고리의 다른 글
    • Notification(1) - NotificationCenter 사용하기
    • present closure처럼 pushViewController로는 쓸 수 없는걸까?
    • TableView Top(header) Padding 제거
    • Protocol과 Delegate Pattern을 이용해 Data를 가져와 표시하는 화면 구성하기. +체크표시 활성화하기
    KemiKIM
    KemiKIM
    안녕하세요! iOS App Developer를 희망하는 주니어 개발자입니다.

    티스토리툴바