๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS122

[Swift] ํ”„๋กœ์ ํŠธ์— Realm ์ ์šฉํ•˜๊ธฐ (cocoapod ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ) Swift ํ”„๋กœ์ ํŠธ์— Realm ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฝ”์ฝ”์•„ํŒŸ์œผ๋กœ install ํ•ด๋ด…์‹œ๋‹ค~ ์šฐ์„  ํ•  ๊ฒƒ์€ Finder์— ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋„์›Œ ๋†“์œผ์„ธ์š” ์ œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋ช…์€ "Universal Memo" ์ž…๋‹ˆ๋‹ค. ์ด์ œ Command + Space bar๋ฅผ ๋ˆŒ๋Ÿฌ์„œ terminal์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค cd๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ dragํ•ด์„œ terminal๋กœ ์ด๋™์‹œ์ผœ ์ฃผ์„ธ์š” ๊ทธ๋ฆฌ๊ณ  enter์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ํ•ด๋‹น ํด๋”์—์„œ ์ž‘์—…์„ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ๋กœ ์ž‘์—… ํŒŒ์ผ ์œ„์น˜ ๋ณ€๊ฒฝ ๋œ ๊ฑธ ํ™•์ธํ•˜๊ณ  pod init ์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š” ๊ทธ๋Ÿฌ๋ฉด ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ๋ณด๋ฉด Podfile์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” vi ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ terminal๋กœ.. 2020. 10. 8.
[Swift] Notification์œผ๋กœ view์™€ view ๋ฐ์ดํ„ฐ ์ ˆ๋‹ฌํ•˜๊ธฐ ๋‚˜์ค‘์— ์ฐธ๊ณ  ํ•˜๋ ค๊ณ  ์ ๋Š” ๊ธ€ ํด๋ž˜์Šค ์‹ ์›์„ ์ฒดํฌํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์„œ(?) ๋“œ๋””์–ด Notification์„ ์“ฐ๊ธฐ๋กœ ํ–ˆ๋‹ค! ์™œ RxRxํ•˜๋Š”์ง€ ์•Œ๊ฑฐ ๊ฐ™๋‹ค... ใ…Žใ…Žใ…Ž 1. Notification ๋“ฑ๋กํ•˜๊ธฐ NotificationCenter.default.addObserver(self, selector: #selector(updateDateLabel(_:)), name: .updateYearDate, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(updateHour(_:)), name: .updateHour, object: nil) NotificationCenter.default.addObserver(self, selecto.. 2020. 10. 7.
[Swift] Date์™€ DateFormatter๋กœ ํ•œ๊ตญ ํ˜„์žฌ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ณ  UILabel์— ๋„ฃ์–ด๋ณด๊ธฐ ๊ทธ ๋™์•ˆ ๋ฏธ๋ฃจ๊ณ  ์žˆ์—ˆ๋˜ Date๋ฅผ ๋ณผ๋•Œ๊ฐ€ ์˜จ๊ฑฐ ๊ฐ™๋‹ค....๐Ÿคจ Horizontal collectionView์— ์ฒซ ๋ฒˆ์งธ ์…€์„ ํ˜„์žฌ ๋‚ ์งœ๋กœ ๊ธฐ์ค€ํ•ด์„œ ๊ทธ ๋‹ค์Œ ๋‚ ์— ๋‹ค์Œ ์…€์„ ํ•  ๋‹นํ•ด ์ฃผ๋Š” ์‹์œผ๋กœ ๋งŒ๋“ค๊ฒ๋‹ˆ๋‹ค! ์šฐ์„  now๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. let now = Date().timeIntervalSince1970 Date() ๋Š” ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ timeIntervalSince1970์€ 1970๋…„ ์ดํ›„๋กœ ๋ช‡ ์ดˆ๊ฐ€ ํ˜๋ €๋Š”์ง€ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹œ๊ฐ„์„ now๋ผ๋Š” ํ”„๋กœํผํ‹ฐ์— ์ง€์ •ํ•ด ์ค๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ DateFormatter์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. let date: DateFormatter = { let df = DateFormatter() df.locale = Locale(identifier: "ko.. 2020. 9. 29.
[Swift] UICollectionViewCell ์•ˆ์— UICollectionView ๋„ฃ๊ธฐ UICollectionViewCell ๋˜ํ•œ ํƒ€๊ณ  ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€๋‹ค ๋ณด๋ฉด UIView์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ์ ์šฉํ•œ ๋ฐฉ์‹๊ณผ ๋˜‘๊ฐ™์ด ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ๋ณด๋ฉด ์ฃผํ™ฉ์ƒ‰ ๋ทฐ๋Š” 3๊ฐœ์˜ ์„น์…˜์„ ๊ฐ€์ง„ UICollectionView์ด๊ณ  ์ดˆ๋ก์ƒ‰ ๊ตฌ์„ฑ์„ ๋ณด๋ฉด ์ฃผํ™ฉ์ƒ‰ ๋ทฐ๋Š” 3๊ฐœ์˜ ์„น์…˜์„ ๊ฐ€์ง„ UICollectionView์ด๊ณ  ์ดˆ๋ก์ƒ‰์€ ๊ฐ ์„น์…˜์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ํ•˜๋‚˜์˜ UICollectionViewCell ์ž…๋‹ˆ๋‹ค ๊ทธ๋ฆฌ๊ณ  ๋ถ„ํ™์ƒ‰์€ ๋งˆ์ง€๋ง‰ ์„น์…˜์— ์žˆ๋Š” UICollectionViewCell์— UICollectionView๋ฅผ ๋„ฃ๊ณ  sub cell์„ ๊ตฌํ˜„ํ•ด ์ค€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค ์šฐ์„  ๋งˆ์ง€๋ง‰ ์ค„์— ์žˆ๋Š” ์ดˆ๋ก์ƒ‰ UICollectionViewCell์˜ ํด๋ž˜์Šค ์ด๋ฆ„์„ MinutePickerCell ์ด๋ผ๊ณ  ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ถ„ํ™์ƒ‰์˜ UICollectionView๋ฅผ .. 2020. 9. 29.
[Swift] UICollectionView์—์„œ Section์„ ๋‚˜๋ˆ  ๋ณด์ž! ์ค€๋น„๋ฌผ & ๋“ค์–ด๊ฐ€๋ฉฐ ์ด์ „ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ ์ž‘์—…ํ•˜๋Š” ํŠœํ† ๋ฆฌ์–ผ ์ด์ง€๋งŒ ์ด๋ฏธ ์ž‘์„ฑ๋œ ๊ธฐ๋ณธ UICollectionView๋งŒ ์žˆ๋‹ค๋ฉด ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋  ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค! ์ด๋ฒˆ์— ๊ตฌํ˜„ํ•  ๊ฒƒ์€ UICollectionView๋ฅผ 3๊ฐœ์˜ Section์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค~ (์„น์…˜์— ๋“ค์–ด๊ฐ€๋Š” ์…€์€ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.) ๊ฐ€๋” UI ํŠœํ† ๋ฆฌ์–ผ ๋ณด๋ฉด ์ƒ๋‹จ ์ปฌ๋ ‰์…˜ ๋ทฐ๋Š” ์ž๋™์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ์นด๋“œ๋ทฐ, ๋ฐ”๋กœ ์•„๋ž˜์—๋Š” ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜ ๋ทฐ๋ฅผ ๋†“๋Š” ๋‹ค ๋˜๊ฐ€, ๊ฐ™์€ ํ™”๋ฉด์—์„œ ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜ ๋ทฐ๋“ค์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ๊ฐ์˜ ์ปฌ๋ ‰์…˜ ๋ทฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋„ ๋˜๊ฒ ์ง€๋งŒ Section์„ ๋‚˜๋ˆ„์–ด ๊ตฌํ˜„ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค~ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค~~ section์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. optional func numberO.. 2020. 9. 28.
[Swift] Anchor ์‚ฌ์šฉํ•ด์„œ UIView ๋„ฃ๊ธฐ ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ... Programmatically ๋ทฐ์— ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. interface builder ์—์„œ UIView๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  frame์„ ์ง€์ •ํ•ด ์ค˜๋„ ๋˜์ง€๋งŒ ์ฝ”๋“œ๋กœ view๋ฅผ ์ƒ์„ฑํ•ด์„œ addSubView ํ•ด์ฃผ๊ฑฐ๋‚˜ ํœด๋Œ€ํฐ ๋ฐฉํ–ฅ(width๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ), safe Area ๋“ฑ์€ Anchor๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ํฌ์ŠคํŒ… ํ•œ collectionView์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ ์ด๋•Œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋Š” width๊ฐ€ ์ œ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•„ ์งค๋ฆฌ๋Š” ๊ฒฝ์šฐ์˜€์Šต๋‹ˆ๋‹ค. Anchor๋ฅผ ํ†ตํ•ด์„œ ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ view๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด storyboard์— ์ถ”๊ฐ€ํ•œ ๋ทฐ๋ฅผ ์‚ญ์ œํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค ์—ฐ๊ฒฐ๋œ IBOutlet ์‚ญ์ œ๋„ ๊ผญ ํ•ด์ค๋‹ˆ๋‹ค ViewController.swif.. 2020. 9. 28.
[iOS] Xcode ๋‘ ๋ฒ„์ „ ๊ฐ™์ด ๊น”๊ธฐ Xcode 12 ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅํ•˜์ž ๋งˆ์ž ์—…๋ฐ์ดํŠธ ํ–ˆ๋”๋‹ˆ ์›ฌ๊ฑธ Xcode 11์ด ํ•„์š”ํ•ด ์กŒ๋‹ค... ๋‹น์—ฐํžˆ ์ธํ„ฐํŽ˜์ด์Šค ๋นŒ๋” ํˆด ๋ฒ„์ „๋„ ๋ฐ”๋€Œ๋Š” ๊ฑด๋ฐ ์—…๋ฐ์ดํŠธ ๋ฒ„ํŠผ ๋ฐ”๋€Œ์ž๋งˆ์ž ์†๊ฐ€๋ฝ์ด ๋งˆ์Œ๋Œ€๋กœ ๋ˆŒ๋Ÿฌ๋ฒ„๋ฆฌ๋Š” ๊ฑธ ์šฐ์งธ ์ž ์šฐ์„  Finder > ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ (ํ˜น์€ Application)์œผ๋กœ ๋“ค์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค ์—…๋ฐ์ดํŠธ ํ•œ Xcode์˜ ํŒŒ์ผ ๋ช…์„ ๋ฐ”๊ฟ” ์ฃผ์„ธ์š” (๋ญ์•ผ ๋„ค์ด๋ฒ„ ์›จ์ผ ์™œ ๋‘ ๊ฐœ์ง€..ใ…Žใ…Žใ…Ž) ์ž ์ด์ œ https://developer.apple.com/download/more/ ๋กœ๊ทธ์ธ - Apple idmsa.apple.com ์•„๋ž˜ ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค! ๋กœ๊ทธ์ธ ํ•„์š”ํ•ด์š” ๋กœ๊ทธ์ธ ํ•ด์ฃผ๊ณ  ์›ํ•˜๋Š” ๋ฒ„์ „์„ ๊ฒ€์ƒ‰ํ•ด ์ค๋‹ˆ๋‹ค. ๋‹ค์šด ๋ฐ›์•„ ์ฃผ์„ธ์š” one hour later... ๋‹ค์šด ๋ฐ›์€ Xcode ์‹คํ–‰ํ•ด ์ฃผ๋ฉด ํ•˜๋‚˜์˜ ๋งฅ์—์„œ.. 2020. 9. 28.
[Swift] UIViewController ์— UICollectionView ๋„ฃ๊ธฐ ์•ˆ๋‚ด ํ•ด๋‹น ํŠœํ† ๋ฆฌ์–ผ์€ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ UICollectionViewController ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ UIViewController์— UIView๋ฅผ ๋„ฃ๊ณ  ํ•ด๋‹น ๋ถ€๋ถ„์— UICollectionView๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ ๋ณด๋“œ์—์„œ UICollectionViewController๋กœ ์‹œ์ž‘ํ•˜๊ณ ์ž ํ•˜์‹œ๋ฉด ๋‹ค๋ฅธ ๊ธ€์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”. ์ค€๋น„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๊ณ  ๋นŒ๋“œ ํ•ด์ค๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์‹คํ–‰ ๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐ€์„œ UIView๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. command + shift + L ์›ํ•˜๋Š” ์˜์—ญ์— ๋งž์ถ”์–ด constraints๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค. ์ด์ œ ViewController.swift๋ฅผ ์—ด์–ด ์ค๋‹ˆ๋‹ค. UICollectionView๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ UICol.. 2020. 9. 28.
UICollectionView must be initialized with a non-nil layout parameter ์—๋Ÿฌ Exception NSException * "UICollectionView must be initialized with a non-nil layout parameter" 0x000060000266a430 ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด UICollectionView๋Š” nil ํƒ€์ž…์ด ์•„๋‹Œ layout ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปฌ๋ ‰์…˜ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค! let collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.minimumLineSpacing = 10 layout.scrollDirection = .vertical layout.sectionI.. 2020. 9. 28.
[Swift] ์™„์ „ ๊ฐ„๋‹จํ•œ tutorial -> URLSession์œผ๋กœ json api ์—์„œ ํŒŒ์‹ฑ๊นŒ์ง€ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ํ•˜๋‹ค๊ฐ€ ๋ฌด๋ฃŒ json ์‚ฌ์ดํŠธ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹คโ˜บ๏ธ 6๊ฐ€์ง€ ์ข…๋ฅ˜์˜ api๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๋ถ€ ์šฉ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š” ์šฐ์„  ์ œ๊ฐ€ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ 'Posts' ์ž…๋‹ˆ๋‹ค. (์ง€๊ธˆ ํฌ์ŠคํŠธ ๋ง๋ก ์˜ ๋…ธ๋ž˜๋ฅผ ๋“ค์œผ๋ฉฐ ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ํฌ์ŠคํŠธ api ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜Ž Postman ๊ฐ•์ถ”) ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด Dictionary๊ฐ€ Array๋กœ ๋“ค์–ด์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ์ฆ‰ ์ฒ˜์Œ์—๋Š” key๊ฐ’์ด ์—†์–ด์šฉ ์šฐ์„  UI๋‚˜ ๊ธฐ๋Šฅ์ ์ธ ๋ถ€๋ถ„์€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  JSON ๋ฐ์ดํ„ฐ ๋ถ€ํ„ฐ ํŒŒ์‹ฑํ•ด ๋ณด์ฃ  ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์กฐ์ฒด๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•ด ์ค๋‹ˆ๋‹ค. ์ด๋•Œ Decodable ์ด๋ž€ ๋””์ฝ”๋”ฉ ์ธ์ฝ”๋”ฉ์„ ์ƒ๊ฐํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค Encodable์€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ค„๋•Œ Decodable์€ JSON์œผ๋กœ ๋ถ€ํ„ฐ ๊ฐ€.. 2020. 9. 12.
[Swift] UINavigationController ์‚ฌ์šฉํ•˜๊ธฐ ๐Ÿช Storyboard ์—์„œ ์ž„๋ฒ ๋“œ ํ•˜๊ธฐ Storyboard > Editor > Embed in > Navigation Controller ๐Ÿช Programmatically import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { self.window = UIWindow(frame: UIScreen.main.bound.. 2020. 9. 8.
[iOS, Swift] AppDelegate์—์„œ window์˜ rootViewController ์„ค์ •ํ•˜๊ธฐ Swift ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ์ƒ์„ฑํ•˜๊ณ  ๋นŒ๋“œํ•˜์—ฌ ์‹คํ–‰ํ•˜๋ฉด ์ฒซํ™”๋ฉด์ด Main.storyboard๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์ผ์— ์žˆ๋Š” ViewController.swift ๋ง๊ณ  ์ž์‹ ์ด ์ƒ์„ฑํ•œ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ window์˜ root view controller๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•  ๊นŒ์š”? ๋˜ํ•œ ์•ฑ ์‹œ์ž‘๊ณผ ๋™์‹œ์— ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋กœ๋“œํ•˜๋ฉด์„œ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ•„์š”ํ•œ ์ดˆ๊ธฐ๊ฐ’์ด ์žˆ๋‹ค๋ฉด?! ์ด๋•Œ๋Š” AppDelegate์— ์ฝ”๋“œ ๋ช‡ ์ค„์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ํ˜„์žฌ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” ์ฑ…์€ the big nerd ranch guide ios programming์˜ ๋ช‡ ๋…„ ์ง€๋‚œ ์ฑ…์ž…๋‹ˆ๋‹ค. ์ฑ… ๋Œ€๋กœ ๋”ฐ๋ผํ•˜๋‹ˆ xcode๊ฐ€ ์˜ˆ์ „๊ณผ ๋ฐ”๊ปด ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— ์˜ˆ์ „ xcode์—๋Š” ์žˆ๋˜ window๋„ ์„ ์–ธํ•ด.. 2020. 8. 27.