์ „์ฒด ๊ธ€ 118

ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(2)

2024.03.02 - [Study/YouTube ๊ฐ•์˜ ๊ณต๋ถ€] - ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(1) ์—ฌ๊ธฐ์„œ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰! โ‘  Main.storyboard - Table view์— Table View Cell ์ถ”๊ฐ€ - ์‚ฌ์ด์ฆˆ ์กฐ๊ธˆ ๋Š˜๋ฆฌ๊ณ , ์•ˆ์— Label ์ถ”๊ฐ€ (Label → ์ค‘์•™์ •๋ ฌ, Add New Constraints์—์„œ ์ƒํ•˜์ขŒ์šฐ 0์œผ๋กœ ์…‹ํŒ…) โ‘ก ์ถ”๊ฐ€ํ•œ Table View cell ํด๋ฆญ - ์šฐ์ธก ์ฐฝ → Identifier : ์ด๋ฆ„ ('Identifier: Type1' ์œผ๋กœ ํ•˜๊ฒ ์Œ, ) โ‘ข ์•ž์„œ 1๋ฒˆ์งธ ๋ฐฉ๋ฒ•์—์„œ reuseIdentifier์„ "TableViewFirstType"์ด๋ผ๊ณ  ์ •ํ–ˆ์—ˆ๋‹ค. ์ด์ œ๋Š” ์ด ์ด๋ฆ„์ด "Type1"์ด ๋œ๋‹ค. ์ด "Type1"์„ ์ง€์ •ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ํ•„..

ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(1)

TableView ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์ •๊ฐˆํ•˜๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์œ„ํ•ด์„œ? ์ „ํ™”๋ฒˆํ˜ธ๋ถ€๋งŒ ์ƒ๊ฐํ•ด๋ด๋„ ์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์„ ๋‹ด๋Š” ํ™”๋ฉด์˜ ๊ฒฝ์šฐ์—๋Š” TableView๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์œ ์‚ฌํ•œ UI๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ€๋ณ€ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค. TableView๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?๐Ÿค” 1. ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€. (ex) ์ „ํ™”๋ฒˆํ˜ธ๋ถ€, ์•„์ดํฐ Setting ์•ฑ , โˆ™โˆ™โˆ™ 2. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ๊ฐœ์ธ๊ฐ€? (ex) 100๊ฐœ, 1000๊ฐœ, 10000๊ฐœ, โˆ™โˆ™โˆ™ 3. ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํ–‰์„ ํด๋ฆญํ•˜๋ฉด? - (ํ•„์ˆ˜ X) โ‘  XCode - ์•ฑ ์ƒ์„ฑ → (์ด๋ฆ„: MyTableView)์œผ๋กœ ํ•˜๊ฒ ์Œ. โ‘ก ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ Show Library - Table View ์ถ”๊ฐ€ - ํ•˜๋‹จ์—..

์›น๋ทฐ(WKWebView)_[iOS/Swift]

XCode์—์„œ ์›ํ•˜๋Š” WebSite๋ฅผ ๋„์›Œ๋ด…์‹œ๋‹ค!!!๐Ÿ˜ƒ ์›น(web) ๋„์šฐ๋Š” ๋ฐฉ๋ฒ• โ–ท Show Library์—์„œ 'WebKit View' ์ƒ์„ฑ โ–ท contorl - drag & drop (Viewcontroller์™€ ์—ฐ๊ฒฐ) โ‘  import WebKit โ‘ก ๋„์šฐ๊ณ  ์‹ถ์€ url String ์ค€๋น„ (โ–ท ์›น(Web) ์ฃผ์†Œ) โ‘ข url → request โ‘ฃ request → load import WebKit let A = "https:// ~~~~~~~~" if let B = URL(string: A) { let C = URLRequest(url:B) WebView์ƒ์„ฑ์ด๋ฆ„.load(C) }

1์ฃผ์ฐจ(3) - ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ / ํ…Œ์ด๋ธ” ๋ทฐ(Table View) / ๋„ค๋น„๊ฒŒ์ด์…˜

์˜ค๋Š˜์€ ๊ฐ•์˜๋Š” ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ ์กฐ๊ธˆ ์–ด๋ ค์šด ๋ถ€๋ถ„๋“ค์ด ์žˆ์–ด์„œ, ๋‘ ๋ฒˆ์งธ ๊ฐ•์˜์ธ 'ํ…Œ์ด๋ธ” ๋ทฐ ๊ตฌํ˜„'์€ 3๋ฒˆ์„ ๋ดค๋‹ค..ใ…Žใ…Ž ๋ณด๊ณ  ๋‚˜๋‹ˆ ์ €์ ˆ๋กœ ์™ธ์›Œ์ง€๋Š” ๋ถ€๋ถ„๋“ค๋„ ์žˆ์—ˆ๊ณ , ๊ณ„์† ๋ณด๋‹ˆ ์ต์ˆ™ํ•ด์ ธ์„œ ์ž์—ฐ์Šค๋ ˆ ๋ฐ›์•„๋“ค์—ฌ์กŒ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. [๋‚ด๋ฐฐ์บ ]์„ ์‹œ์ž‘ํ•˜๊ณ , 'ํ•˜๋ฃจ 12์‹œ๊ฐ„'์ด ์ง„์งœ ๊ธธ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๋ณต์Šต์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•˜๋‹ค ๋ณด๋‹ˆ, ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.๐Ÿฅน ๊ทธ๋ž˜๋„ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋‚˜๊ฐ€๋Š” ์žฌ๋ฏธ๊ฐ€ ์žˆ๋‹ค! ^0^ ์˜ค๋Š˜ ๊ฐ•์˜ ๊ฐ„๋‹จํ•˜๊ฒŒ(?) ์ •๋ฆฌํ•ด๋ณด๋ฉด~!๐Ÿคฅ โ‘  array์™€ dictionary๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ๋ฒ•์„ ํ™œ์šฉํ•œ ์žฅ์  ์•Œ์•„๋ณด๊ธฐ โ‘ก ์„ค๊ณ„๋ฅผ ํ•˜๊ณ  ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ '๋ชจ๋ธ๋ง์ด ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ'๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๋‚˜๋„ ์ง์ ‘ ๋ชจ๋ธ๋ง์„ ํ•ด๋ณด๊ธฐ โ‘  ํ…Œ์ด๋ธ” ๋ทฐ์— ์…€(cell)์„ ์ถ”๊ฐ€ํ•˜๊ธฐ, ๊ทธ ์…€(cel..

1์ฃผ์ฐจ(2) - Swift ๊ธฐ๋ณธ ๋ฌธ๋ฒ• / ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋กœ์ง ์—ฐ๊ฒฐ

์˜ค๋Š˜์€ Swift ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๊ณผ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋กœ์ง์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. Swift ๋ฌธ๋ฒ•์€ [๋‚ด๋ฐฐ์บ ] iOS ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜์— ๋“ค์–ด์˜ค๊ธฐ ์ „์— ์ด๋ฏธ ํ•œ ๋ฒˆ ๊ณต๋ถ€ํ–ˆ๋˜ ๋ถ€๋ถ„์ด์—ˆ์ง€๋งŒ, ํ•œ ๋ฒˆ ๋” ๋ณต์Šตํ•œ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ์ง‘์ค‘ํ•ด์„œ ์ˆ˜์—…์„ ๋“ค์—ˆ๋‹ค.โ˜บ๏ธ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋กœ์ง ์—ฐ๊ฒฐํ•˜๋Š” ๋ถ€๋ถ„ ๋˜ํ•œ ์ด์ „์— ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ์ง€๋งŒ, ์•„์ง ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์€ ์•„๋‹ˆ๋ผ์„œ ๊ฐ•์˜๋ฅผ ๋ฉˆ์ถฐ๊ฐ€๋ฉด์„œ, ์ง์ ‘ ํ•ด๋ณด๊ณ  ๋ˆˆ๊ณผ ์†์— ์ต์„ ์ˆ˜ ์žˆ๊ฒŒ ๊ณ„์† ๋ˆŒ๋Ÿฌ๋ดค๋‹ค! Swift ๊ธฐ๋ณธ ๋ฌธ๋ฒ• โ–ถ๏ธŽ var & let (๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜) var๋Š” '๋ณ€์ˆ˜', let์€ '์ƒ์ˆ˜'์ด๋‹ค. ์ด ๋‘ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘๋Š” ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. var(๋ณ€์ˆ˜)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ดํ›„์— ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฐ˜๋ฉด์—, let(์ƒ์ˆ˜)๋Š” ํ•œ ๋ฒˆ ๊ฐ’์ด ์ €์žฅ๋˜๋ฉด ์ดํ›„์—..

1์ฃผ์ฐจ_(1) - Interface Builder & UI ๊ตฌ์„ฑ

โ‘  X-Code ์‹คํ–‰ X-Code๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋ณด์ธ๋‹ค. Create New Project ํด๋ฆญ! iOS → App → Next Prouduct Name์— ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ ๋Š”๋‹ค. (Camel Case๋กœ ์ ๊ธฐ) Organization Identifier์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , Interface๋Š” Storyboard, Language๋Š” Swift... ์œ„ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ์„ค์ •ํ•œ ํ›„ Next!! โ‘ก main.storyboard ์™ผ์ชฝ์— ๋ณด์ด๋Š” ๋ถ€๋ถ„์„ '๋„ค๋น„๊ฒŒ์ดํ„ฐ(navigator)'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋„ค์ด๊ฒŒ์ดํ„ฐ์— ์žˆ๋Š” 'Main'์ด ๋ฐ”๋กœ 'main.storyboard'์ด๋‹ค. ์ด main.storyboard๋ฅผ ํ†ตํ•ด Interface Builder๋ฅผ ์—ด ์ˆ˜ ์žˆ๋‹ค. โ‘ข UI ๊ตฌ์„ฑ ๋ฐ ๋””์ž์ธ ๊ธฐ์ดˆ Ma..

Swift - Array

Array '๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ด๋Š” ํ†ต'์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. array๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ํ†ต์— ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ด ํ†ต์— ๋‹ด๋Š” ๋ณ€์ˆ˜๋“ค์€ 'element'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. array๋Š” ๋‘ ๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. โ‘  ํ†ต์— ๋‹ด์„ ๋•Œ๋Š” ๊ฐ™์€ ํƒ€์ž…์„ ๋‹ด์•„์•ผ ํ•œ๋‹ค. (ex. Int๋ผ๋ฆฌ, String๋ผ๋ฆฌ ...) โ‘ก ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. array ์† element๋“ค์˜ ์ˆœ๋ฒˆ์ด ์กด์žฌํ•œ๋‹ค. ์ด ์ˆœ๋ฒˆ์„ Index๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. (Index๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ Index๋Š” (์ „์ฒด ๊ฐฏ์ˆ˜ - 1)๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.) Q. array๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ• ๊นŒ? ๐Ÿค” โ‘  ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” item โ‘ก item์˜ ์ˆœ์„œ๋ฅผ ์•Œ๋ฉด ์œ ์šฉํ•  ๋•Œ ๊ทธ๋Ÿผ ์ด์ œ๋ถ€ํ„ฐ array๋ฅผ ์–ด๋–ป๊ฒŒ swift๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์‚ฌ์šฉํ• ์ง€ ์•Œ์•„๋ณด์ž!! :-) < array ๋งŒ๋“ค๊ธฐ, ์š”..

Swift - Optional(์˜ต์…”๋„)_๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

๊ณ ๊ธ‰ ๊ธฐ๋Šฅ 4๊ฐ€์ง€ 1. Forced unwrapping optional 2. Optional binding 3. Guard statement 4. Nil coalescing 1. Forced unwrapping optional → ์–ต์ง€๋กœ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž. 2. Optional binding → ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž. 3. Guard statement → ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž 2ํƒ„ (guard๋ฌธ) 4. Nil coalescing → ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์•˜๋”๋‹ˆ ๊ฐ’์ด ์—†์œผ๋ฉด ๋””ํดํŠธ ๊ฐ’์„ ์ฃผ์ž. ๊ทธ๋ƒฅ print(carName) ํ•˜๋ฉด, ์˜ต์…”๋„๋กœ ๋œธ. ๋งŒ์•ฝ, ๋ฐ•์Šค์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๋ฉด? ์ฆ‰, carName = nil ์ธ ์ƒํƒœ์—์„œ print(carName!)์„ ํ•œ๋‹ค..