์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

Alert๊ณผ ๋™๊ธฐ/๋น„๋™๊ธฐ ๊ฐœ๋…

๐ŸŽ iOS/Swift

by AHN.Jihyeon 2024. 8. 29. 19:01

๋ณธ๋ฌธ

showAlert ๋ฉ”์„œ๋“œ๋Š” ๋น„๋™๊ธฐ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด, UIAlertController๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•Œ๋ฆผ์„ ๋„์šฐ๋Š” ์ž‘์—…์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. 

 

๋น„๋™๊ธฐ ๋™์ž‘์˜ ๊ฐœ๋…

UI ๊ด€๋ จ ์ž‘์—…์˜ ๋น„๋™๊ธฐ์„ฑ:

UIAlertController๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์ž‘์—…์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” present(_:animated:completion:) ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐฉ์‹๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, present(_:animated:completion:) ํ˜ธ์ถœ ํ›„ UI๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ ์‹คํ–‰์ด ์ผ์‹œ ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ์ง„ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ์™€ Completion Handler:

UIAlertController์˜ present(_:animated:completion:) ๋ฉ”์„œ๋“œ๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์•Œ๋ฆผ์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ณ , ํ‘œ์‹œ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์—๋Š” completion ํด๋กœ์ €๊ฐ€ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. completion ํด๋กœ์ €๋Š” ์„ ํƒ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•Œ๋ฆผ์ด ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๊ฑฐ๋‚˜ ์‚ฌ๋ผ์งˆ ๋•Œ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋™๊ธฐ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

1. ์‚ฌ์šฉ์ž ํ™•์ธ์ด ํ•„์š”ํ•œ ์ค‘์š”ํ•œ ์ž‘์—…

์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž์˜ ๋ช…์‹œ์ ์ธ ํ™•์ธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ ์‚ญ์ œ, ๋กœ๊ทธ์•„์›ƒ, ํšŒ์› ํƒˆํ‡ด ๋“ฑ ๋˜๋Œ๋ฆด ์ˆ˜ ์—†๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ์Šน์ธํ•ด์•ผ๋งŒ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

showSnycAlert(message: "Are you sure you want to delete this item?", 
              buttonTitle: "Delete", 
              buttonClickTitle: "Confirm", 
              method: {
    // ์‚ฌ์šฉ์ž๊ฐ€ Confirm์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ
    deleteItem()
})

 

์œ„์˜ ์˜ˆ์‹œ์—์„œ deleteItem()์€ ์‚ฌ์šฉ์ž๊ฐ€ "Confirm" ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž์˜ ํ™•์ธ์ด ์žˆ์„ ๋•Œ๋งŒ ์ด ๋ฉ”์„œ๋“œ ์•ˆ์— ์ •์˜๋œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

2. ์ž‘์—… ํ›„ ํ›„์† ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

์‚ฌ์šฉ์ž๊ฐ€ Alert ์ฐฝ์—์„œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„์— ํŠน์ • ํ›„์† ์ž‘์—…์„ ์ฆ‰์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ ๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋’ค, ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๊ทธ์•„์›ƒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” Alert์„ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

showSnycAlert(message: "Do you want to logout?", 
              buttonTitle: "Logout", 
              buttonClickTitle: "Yes", 
              method: {
    // ์‚ฌ์šฉ์ž๊ฐ€ Yes๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ
    performLogout()
})

 

 

3. ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•˜๊ธฐ ์ „์— ํ™•์ธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž์˜ ์ตœ์ข… ํ™•์ธ์„ ๋ฐ›๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒฐ์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ธฐ ์ „์— ๊ฒฐ์ œ ๋‚ด์šฉ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธ์‹œํ‚ค๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธ์„ ๋ˆ„๋ฅด๋ฉด ๊ทธ๋•Œ์„œ์•ผ ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

showSnycAlert(message: "Do you want to proceed with the payment?", 
              buttonTitle: "Payment", 
              buttonClickTitle: "Proceed", 
              method: {
    // ์‚ฌ์šฉ์ž๊ฐ€ Proceed๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ
    processPayment()
})

 

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ