티스토리 뷰

iOS

[iOS] Alert, ActionSheet 톺아보기

국산 앨런 2019. 9. 4. 01:35

모바일 앱을 사용하다 보면 현재와 다른 흐름 또는 알림, 경고 등을 위해서

 

팝업 형태의 창을 자주 띄우는 데요

 

iOS 에서 대표적으로 Alert, ActionSheet가 있습니다.

 

Alert 와 ActionSheet는 화면에 보여지는 것만 다를뿐, 구성요소는 같습니다.

 

Alert

  • 중요한 액션을 하기 전 경고가 필요한 경우
  • 액션을 취소할 기회를 제공해야 하는 경우
  • 사용자의 작업을 한 번 더 확인하거나 삭제 등의 작업을 수행하거나 문제 사항을 알릴 때
  • 결정이 필요한 중요 정보를 표시할 경우

Action

  • 사용자가 고를 수 있는 액션 목록이 여러 개일 경우
  • 새 작업 창을 열거나, 종료 여부 확인 시
  • 사용자의 결정을 되돌리거나 그 동작이 중요하지 않을 경우

 

스타일 지정을 통해서 Alert 형태로 구현할 것인지, ActionSheet의 형태로 구현할 것인지를 선택할 수 있습니다.

 

 

 

 

여기서 알아두어야 할 두가지가

 

UIAlertController 와 UIAlertAction 입니다.

 

UIAlertController가 현재의 view에서 present될 뷰이고, 그에 관한 action에 대한 설정이 UIAlertAction 입니다.

 

UIAlertController의 주요 프로퍼티

  • var title: String?: 얼럿의 제목입니다.
  • var message: String?: 얼럿에 대해 좀 더 자세히 설명하는 텍스트입니다.
  • var actions: [UIAlertAction]: 사용자가 얼럿 또는 액션시트에 응답하여 실행할 수 있는 액션입니다.
  • var preferredStyle: UIAlertController.Style: 얼럿 컨트롤러의 스타일입니다. 얼럿(alert)과 액션시트(actionSheet)가 있습니다.

UIAlertAction의 주요 프로퍼티

  • var title: String?: 액션 버튼의 타이틀입니다.
  • var isEnabled: Bool: 액션이 현재 사용 가능한지를 나타냅니다.
  • var style: UIAlertAction.Style: 액션 버튼의 적용될 스타일입니다.

Exmple) 

 

간단한 예제를 통해서 톺아보도록 하겠슴당

 

// UIAlertController 초기화
alertController = UIAlertController(title: "타이틀이담마", message: "메세지담마", preferredStyle: .alert)
actionsheetController = UIAlertController(title: "타이틀이담마", message: "메세지담마", preferredStyle: .actionSheet)

// UIAlertAction 설정
// handler : 액션 발생시 호출
let actionDefault = UIAlertAction(title: "액션 디폴트", style: .default, handler: nil)
let actionDestructive = UIAlertAction(title: "액션 디스트뤕티브", style: .destructive, handler: { action in
	print("destructive action called")
})

// **cancel 액션은 한개만 됩니닷 !!
let actionCancel = UIAlertAction(title: "액션 캔슬", style: .cancel, handler: nil)

alertController.addAction(actionDefault)
alertController.addAction(actionDestructive)
alertController.addAction(actionCancel)
actionsheetController.addAction(actionDefault)
actionsheetController.addAction(actionDestructive)
actionsheetController.addAction(actionCancel)

 

 

그럼 20000~

댓글
공지사항