π» κ°λ°/iOS
SwiftUI Keyboard Dismiss μ΄μ ꡬνν ν κ³Όμ λ₯Ό λ€μ ν λ² κ΅¬ννλ λμ€μ μΆκ°ν΄λ³΄κ³ μΆμ κΈ°λ₯μ΄ μμλ€. μ¬μ©μ μ
λ ₯μ μννΈ ν€λ³΄λ νΉμ λ²νΌμ ν΅ν΄μ μ
λ ₯ λ°λλ°, μννΈ ν€λ³΄λλ‘ μ
λ ₯ λ°μ κ²½μ°μ Submitμ λλ₯΄μ§ μκ³ , λ·°μ ν΄λ¦νλλΌλ μννΈ ν€λ³΄λκ° λ«νλλ‘ κ΅¬ννκ³ μΆμλ€. 1. Focused μ°μ μ΄ κΈ°λ₯μ SwiftUI 3.0 (iOS 15) μ΄μλΆν° μ§μνλ€. κ·Έλ° νμΈκ° μ λ§ κ°λ¨νκ² κ΅¬νμ΄ κ°λ₯νλ€. var body: some View { @State private var input: String = "" @FocusState private var isFocused: Bool // μλ΅... VStack { TextField("PlaceHolder", $i..
π» κ°λ°/iOS
Swift UIμμ ForEachλ‘ View μ¬λ¬ κ° μ€λ μ€ν°λμμ λ μ¨λ₯Ό 보μ¬μ£Όλ νμ΄μ§λ₯Ό Swift UIλ‘ κ΅¬ννλ κ³Όμ λ₯Ό μ§ννλ€. HStackκ³Ό VStackμ νμ©ν΄μ ꡬννλ κ³Όμ μκ³ κ΅¬ν κ²°κ³Όλ μλμ κ°λ€. νμ§λ§ ꡬνμ μλ£νκ³ λ³΄λ λλΆλΆμ΄ νλ μ½λ©λμ΄ μμ΄μ κ²ΉμΉλ μ½λλ€μ΄ λ§μ μ΄λ₯Ό μμ ν΄μ£Όλ μμ
μ μ§ννλ€. μλ μ¬μ§μ 보면 λΉ¨κ°μ λ·° μμ μ΄λ‘μ λ·°λ€μ΄ κ°μ ννλ‘ λ°°μΉλμ΄ μλ κ²μ λ³Ό μ μλ€. κΈ°μ‘΄μλ HStack λ΄λΆμ VStackμ μ¬λ¬ κ° λ°°μΉνλ λ°©μμΌλ‘ ꡬννλλ°, μ΄λ₯Ό ForEachλ₯Ό νμ©ν΄μ VStackμ μ¬μ¬μ©νλ λ°©μμΌλ‘ μμ νλ€. 1. κΈ°μ‘΄ μ½λ struct DailyHourWeatherView: View { var body: some View { HS..
π» κ°λ°/iOS
μ§λ μκ°μ κ°μΈμ μΌλ‘ ν΄λ‘μ μ λν΄μ μ’ λ μμλ΄€λλ° μ€λ κ°μμμλ ν΄λ‘μ μ λν μ§λλ₯Ό λκ°λ€. λ³΅μ΅ μ°¨μμμ κ°μλ₯Ό λ€μΌλ©΄μ λ€μ ν λ² μ 리ν΄λ΄€λ€. ν΄λ‘μ ν΄λ‘μ λ κΈ°λ₯μ κ°κ³ μλ μ½λ λΈλ‘μ΄λ€. ν΄λ‘μ μμλ μμμ λ³μμ λν μ°Έμ‘°λ₯Ό μΊ‘μ³νκ³ μ μ₯ν μ μμΌλ©° ν¬κ² 3κ°μ§λ‘ ꡬλΆνλ€. μ μ ν¨μ μ€μ²© ν¨μ ν΄λ‘μ ννμ 1. μ μ ν¨μ 첫 λ²μ§Έλ‘ μ μν¨μλ μ°λ¦¬κ° νλ‘κ·Έλλ°μ νλ©΄μ μ μνκ³ νΈμΆνλ ν¨μλ€μ΄λ€. func ν€μλλ₯Ό ν΅ν΄ μ μνλ€. μ μν¨μλ μ΄λ¦μ κ°μ§κ³ μκ³ μ΄λ ν κ°λ μΊ‘μ³νμ§ μλ ν΄λ‘μ μ΄λ€. func justFunction() -> String { return "KODO" } 2. μ€μ²© ν¨μ λ λ²μ§Έλ‘ μ€μ²© ν¨μλ μ΄λ¦μ κ°μ§κ³ λλ¬μΌ ν¨μλ‘λΆν° κ°μ μΊ‘μ³ν μ μλ..
π» κ°λ°/iOS
ν΄λ‘μ ν΄λ‘μ λ λ€μν ννλ‘ ννμ΄ κ°λ₯νλ€. νν ν΄λ‘μ : ν¨μμ λ§μ§λ§ 맀κ°λ³μλ‘ μ λ¬λλ ν΄λ‘μ λ ννν΄λ‘μ λ‘, ν¨μ λ°μ ꡬνλ μ μλ€. λ°ν νμ
μλ΅ : μ»΄νμΌλ¬κ° ν΄λ‘μ μ λ°ν νμ
μ μ μΆν μ μλ κ²½μ°, λ°ν νμ
μ μλ΅ν μ μλ€. 맀κ°λ³μ μ΄λ¦ μλ΅ : 맀κ°λ³μμ μ΄λ¦μ΄ νμ μκ³ , μ»΄νμΌλ‘κ° νμ
μ μ μΆν μ μλ κ²½μ°, μΆμ½λ μ λ¬ μΈμ ννλ‘ μ¬μ©ν μ μλ€. μμμ λ°ν : λ°ν κ°μ΄ μλ κ²½μ°, ν΄λ‘μ μ 맨 λ§μ§λ§ μ€μμ returnμ μλ΅ν μ μλ€. 1. λ°ν νμ
μλ΅ calculate ν¨μμ method 맀κ°λ³μλ Intνμ΄ λ°νλλ€λ κ²μ μ»΄νμΌλ¬λ μκ³ μκΈ°μ ν΄λ‘μ Έμμ λ°ν νμ
μ λͺ
μν΄μ£Όμ§ μμλ λλ€. νμ§λ§ in ν€μλλ μλ΅ν μ μλ€. let res..
π» κ°λ°/iOS
μ΅μ€ν
μ
μ€μννΈμ κ°λ ₯ν κΈ°λ₯μΌλ‘, ꡬ쑰체, ν΄λμ€, μ΄κ±°ν, νλ‘ν μ½ νμ
μ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μ μκ² ν΄μ€λ€. κΈ°λ₯μ μΆκ°νλ €λ νμ
μ ꡬνλ μμ€ μ½λλ₯Ό μμ§ λͺ»νλλΌλ νμ
λ§ μκ³ μλ€λ©΄ κΈ°λ₯μ νμ₯ν μ μλ€. μ΅μ€ν
μ
μΌλ‘ νμ
μ μΆκ°ν μ μλ κ²λ€μλ μ°μ° νμ
νλ‘νΌν° / μ°μ° μΈμ€ν΄μ€ νλ‘νΌν° νμ
λ©μλ / μΈμ€ν΄μ€ λ©μλ μ΄κΈ°ν μλΈμ€ν¬λ¦½νΈ μ€μ²© νμ
νΉμ νλ‘ν μ½μ μ€μν μ μλλ‘ κΈ°λ₯ μΆκ° μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μλ μμ§λ§ κΈ°μ‘΄μ μ‘΄μ¬νλ κΈ°λ₯μ μ¬μ μ(override)λ λΆκ°λ₯νλ€. μ΄κ²μ΄ λ°λ‘ μμκ³Όμ μ°¨μ΄μ΄λ€. μμ VS μ΅μ€ν
μ
μμ - ν΄λμ€ νμ
μ νμ© - μμ§μ μΌλ‘ νμ₯ - μ¬μ μ κ°λ₯ μ΅μ€ν
μ
- ν΄λμ€, ꡬ쑰체, μ΄κ±°ν, νλ‘ν μ½ λ± λͺ¨λ νμ
μ νμ© - μ..
βΉοΈ λΌμ΄ν/νκ³
1λΆμ μ΄μ΄μ μ°λ κΈ! μΈν΄μ μ΄ 7μ£Όκ° μ§νλλ€. λ§μ§λ§ μ£Όλ μ΅μ’
λ°νμ μλ£μ λ±μΌλ‘ μΌμ μ΄ λ§μκΈ°μ λ§μ§λ§ μ£Όλ₯Ό μ μΈνλ©΄ 6μ£ΌλΌλ 짧μ μκ°μ΄μλ€. μ¬μ€, μΈν΄ μ΄κΈ°μλ 7μ£Όκ° μμ² κΈΈκ² λκ»΄μ‘λλ° μΈν΄ κ³Όμ λ₯Ό μννλ€λ³΄λ 7μ£ΌλΌλ μκ°μ΄ λ무 μ§§κ² λκ»΄μ‘λ€. 1μ£Ό - ν μ μ κΈ°κ° 7μ 4μΌμ μμμΌλ‘ μΈν΄μ΄ μμλμλ€. κ° ν λ³λ‘ μΈν΄μ΄ 1 ~ 2λͺ
μ λ λ°°μ λμκ³ νμμλ μΈν΄μ΄ λ ν λͺ
μ΄μλ€. νμ μμ μ‘°μ§μΈ μ€μμλ μΈν΄μ΄ λ ν λͺ
μ΄μλ€. λ νΌμμμ§λ§ ν λΆμκΈ°κ° λ무 μ’μμ μ μνλλ° ν° μ΄λ €μμ μμλ κ² κ°λ€. μ무νΌ, 첫째 μ£Όμλ λ΄κ° μν νμ΄ λ¬΄μμ νκ³ μλ νμΈμ§μ κ³Όμ λ‘ μνν μμ΄λμ΄μ λν ꡬμ λ° κΈ°νμ μ§ννλ€. μΈν΄λ€λΌλ¦¬λ μ‘°κ° μ ν΄μ‘λ€. λ΄κ° μν μ‘°..
π» κ°λ°/μ€λμ μ½μ§
곡곡λ°μ΄ν° ν¬νΈμμ νκ΅ν경곡λ¨μμ μ 곡νλ λκΈ°μ§ μ 보λ₯Ό ν΅ν΄μ κ°λ¨νκ² μΈ‘μ μλ³ λκΈ°μ§ μ 보λ₯Ό νμΈν μ μλ μ±μ λ§λ€μ΄λ³΄λ €κ³ νλ€. νκ΅ν경곡λ¨_μμ΄μ½λ¦¬μ_μΈ‘μ μμ 보 λκΈ°μ§ μΈ‘μ μ μ 보λ₯Ό μ‘°ννκΈ° μν μλΉμ€λ‘ TM μ’νκΈ°λ°μ κ°κΉμ΄ μΈ‘μ μ λ° μΈ‘μ μ λͺ©λ‘κ³Ό μΈ‘μ μμ μ 보λ₯Ό μ‘°νν μ μλ€. β» μ΄μκ³μ μΌλ‘ μ¬μ©νκ³ μ ν κ²½μ° μμ΄μ½λ¦¬μ OpenAPI μ¬μ©μ www.data.go.kr ꡬννλ €λ μ±μ μ΄ 3κ°μ ViewControllerλ‘, μ§μλͺ
μ κ²μν μ μλ νμ΄μ§ ν΄λΉ μ§μμ μΈ‘μ μ λͺ©λ‘μ 보μ¬μ£Όλ νμ΄μ§ νΉμ μΈ‘μ μμ λκΈ°μ§μ μμΈμ 보λ₯Ό 보μ¬μ£Όλ νμ΄μ§ λ‘ κ΅¬μ±λμ΄ μλ€. μ°μ μ§μλͺ
μ κ²μν μ μλ νμ΄μ§μΈ ViewControllerλΆν° μ΄ν΄λ³΄μ. // // ViewControlle..
π» κ°λ°/μ€λμ μ½μ§
Delegateλ‘ νΉμ Cellμ ν΄λ¦νμ λ μμΈ μ 보 νμ΄μ§λ‘ μ΄λνλλ‘ κ΅¬ννλ€. extension ViewController : UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { guard let viewController = self.storyboard?.instantiateViewController(identifier: "DiaryDetailViewController") as? DiaryDetailViewController else { return } let diary = self.diaryList[indexPath.row] ..
π» κ°λ°/iOS
곡λΆν κ² λΆμ€νΈμ½μ€ - iOS νλ‘κ·Έλλ°μ μν μ€μννΈ κΈ°μ΄ μκ²λ κ² 1. μ΅μ
λ // someOptionalParmμ nilμ΄ ν λΉλ μ μμ func someFunction(someOptionalParam: Int?) { // .... } /// someOptionalParmμ nilμ΄ ν λΉλ μ μμ func someFunction(someOptionalParam: Int) { // .... } nilμ΄ ν λΉλ μ μλμ§ μλμ§λ₯Ό νν nilμ κ°λ₯μ±μ λͺ
μμ (μ½λ)μΌλ‘ νν κ°λ₯ μ΅μ
λμ΄ μλ κ²½μ° nil μ²΄ν¬ μμ΄ λ°λ‘ μ¬μ© κ°λ₯ nilλ‘ μΈν μμΈ μν©μ μ΅μν 2. μ΅μ
λ νν λ°©λ² // μμμ μΆμΆ μ΅μ
λ var optionalValue: Int! = 10 switch optionVa..
π» κ°λ°/iOS
곡λΆν κ² λΆμ€νΈμ½μ€ - iOS νλ‘κ·Έλλ°μ μν μ€μννΈ κΈ°μ΄ μκ²λ κ² 1. 맀κ°λ³μ κΈ°λ³Έ κ° func setUserInfo(name : String, age : Int, region : String = "Deajeon") {} ν¨μλ₯Ό μ μν λ 맀κ°λ³μμ κΈ°λ³Έμ μΌλ‘ μ λ¬λ κ°μ 미리 μ μ₯ν μ μμ κΈ°λ³Έ κ°μ κ°λ 맀κ°λ³μλ 맀κ°λ³μ λͺ©λ‘ μ€ λ§¨ λ€μ μμΉνλ κ²μ΄ μ’μ 2. μ λ¬μΈμ λ μ΄λΈ // λ΄λΆμμλ 맀κ°λ³μ μ΄λ¦ func greeting(to friend : String, from me : String) { print("Hello, \(friend)!, my name is \(me)") } // νΈμΆν λλ μ λ¬μΈμ λ μ΄λΈ greeting(to : "doko", from : "kodo") ..