👨🏻‍💻iOS 공부/iOS & Swift

    [iOS] 내가 보려고 쓰는 NotificationCenter 사용법

    NotificationCenter를 직역하면 알림센터가 된다. 사실 말 그대로 "알림을 통해 액션을 통제"하는 역할을 한다. 많은 서적, 영상에서 NotificationCenter를 방송국으로 비유하기도 하는데, 그 이유는 차차 읽다보면 알 수 있다. NotificationCenter : 자자 액션이 수행되었으니, 각 담당자들은 업무 수행 바람~ VC1 : 넵 VC2: 네~ VC3: 네! NotificationCenter가 관제탑이 되는 것이고, 각 VC 1,2,3에게 각 업무를 수행해야하는 시점에 말해주는 것이다. (마치 방송국에서 전파를 쏘고, 각 가정집의 TV에서 이를 수신하여 화면을 보여주는 것과 같아서 그렇게 비유하는 듯 하다.) 만약 VC1이 화면에서 사라질 때, VC2의 버튼을 회전시키고 싶..

    [iOS] viewForHeaderInSection의 주기에 대하여...

    테이블뷰의 헤더에 다양한 커스텀 뷰를 추가해본 적이 있을 것이다. ScrollView + PageControl로 이미지 슬라이더를 구현했던 적이 있는데, 전체 뷰의 스크롤을 하단으로 내림에 따라 해당 헤더뷰가 화면에서 사리지게 되고, 다시 올라왔을 때 하나의 문제를 발견할 수 있었다... 예를 들어 이미지 슬라이더의 이미지를 3번째까지 슬라이드 해두고, 뷰를 끝까지 내린 후 다시 헤더로 왔을 때 아이템이 0번째로 이동해있는 문제였다... 이유를 찾아보니... viewForHeaderInSection은 단 한 번 호출되는 것이 아니라 여러 번 호출된다는 것 때문이었다! (여러 번의 조건 = "헤더뷰"가 등장할 때 마다) 즉 이를 고려해서 코드를 구현했어야 했는데, 매번 헤더가 등장할 때 마다 해당 메서드가..

    [iOS] UITableViewCell내 UIButton 액션이 작동하지 않을 때 (feat. tag/delegate/closure)

    아무렇지 않게 tableView의 CustomCell에 UIButton을 넣어주고 addTarget을 하여 액션을 넣어주고 있었다. . . 응??🧐 . . 당연히 cell에 넣어주고 action을 주면 작동을 하리라 생각했으나 되지 않았다..! 바로 검색 시작... 정말 다양한 답변들을 찾아볼 수 있었다. 하지만 모든 방법이 문제를 해결해주지는 못했고...😇 여러 가지 방법을 찾아본 결과... 결론을 먼저 이야기하자면 총 세 가지 방법으로 해결을 할 수 있다. 1. cellForRowAt에서 Button의 tag를 이용하는 방법 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { le..

    [RealmSwift] Nested-Object value add 팁 (중복 방지, 업데이트 방지)

    Realm에 Object를 저장할 때 Dictionary혹은 Json 구조처럼 저장하고 싶을 때가 있다. A반 -------- 이름 : 스위프트 | |____ 나이 : 10 | |_______ 이름 :파이썬 |____ 나이: 70 대충 이런 구조..? { "title":"이석원님 작품", "bookList":[ { "title":"2인조", "image": "2인조", "author" : "이석원", "date" : "2021-03-10" }, { "title": "우리가 보낸 가장 긴 밤", "image": "우리가 보낸 가장 긴 밤", "author" : "이석원", "date" : "2021-03-10" } ] } json으로 보면 이런 구조! 1 : ..

    [iOS] UIColorWell로 커스텀 컬러 선택하기

    https://developer.apple.com/documentation/uikit/uicolorwell Apple Developer Documentation developer.apple.com 공식 문서에는 짧게 한 줄로 설명되어 있다. 컬러 픽커를 보여주는 화면을 컨트롤한다. 바로 코드와 화면으로 보는게 빠를 것 같다. 우선 UIColorWell을 사용하기 위해서는 버튼을 하나 만들어줘야 한다. let colorPicker = UIColorWell(frame: CGRect(x: 100, y: 100, width: 100, height: 100) frame와 CGRect로 크기를 정해주고 addSubview하게 되면 아래와 같은 아이콘을 볼 수 있다. 해당 아이콘을 클릭하게 되면 색상을 선택할 수 있..

    [Xcode] Storyboard로 다크모드 대응하기

    iOS13에 다크모드 기능이 나오고 난 후 부터 꺼본적이(?) 없는 것 같다. 주변만 봐도 다크모드를 애용하고 있는 것을 보면, 13 이후부터는 다크모드 대응이 필수적이라는 것을 알 수 있다. 1. Asset.xcassets > Accent Color > New Color Set 추가하기 2. Appearances 및 Color 선택 New Color Set을 눌러서 새로운 color set을 추가해준다. 그러면 2개의 색상을 디폴트로 볼 수 있는데 여기서 기본 + 다크모드일 때 색상을 골라주면 된다! 오른쪽 위 inspector를 봐보자. Name : 커스텀 컬러의 이름을 저장 Appearances : 보여줄 조건을 선택 Color : 색상 선택 기본일 때는 검정색, 다크모드일 때는 흰색을 보여주도록 ..