Archive/가족 메신저(project-ios) 13

[README.md] HappyHouse 🧸

🧸 Project - 멀리 떨어져있는 가족들의 심리적 거리를 좁힐 수 있게 도와주는 서비스 - release : 해커톤 이후 현재 앱 출시를 목표로 준비 중 - 깃허브 : https://github.com/DoGood-Hackathon-2/HappyHouse - 해커톤 기간 : 2021.08.13~15 - 팀 구성 - 디자이너 1, 기획자 1, iOS 개발자 2, 백엔드 2 - https://rldd.tistory.com/180?category=988381 2021 두굿해커톤 후기(feat.우수상)🎊 ✅ SNS로 두굿 해커톤 개최 소식을 알게 되어 08.13 ~ 08.15까지 함께 iOS RxSwift 스터디를 하는 개발자분과 DO GOOD HACKATHON에 참여하게 되었습니다. 이번이 첫 해커톤 참여..

[RxSwfit] 테이블 뷰 안에 버튼이 반응하지 않을 때

✅ 이번 시간에는 TableView안에 UIButton이 반응하지 않을 때를 알아보자. 저기 보이는 수정하기와 챌린지 시작이 UIButton이다. IBAction으로 연결하니까 잘 되는데, rx를 사용하니까 안되는 문제 발견 아래의 코드를 보면 쉽게 문제 해결을 방법을 이해할 수 있다. // 처음에 작성한 코드 -> 반응 없음 REditButton.rx.tap .subscribe { self.REditButton.tintColor = .blue self.REditButton.setTitle(" 도전중... ", for: .normal) } // 두번째로 작성한 코드 -> 여전히 반응 없음 REditButton.rx.controlEvent(.allTouchEvents) .subscribe { self.RE..

[Swift] String에서 마지막 글자 삭제하기

[Swift] String에서 마지막 글자 삭제하기 time = "오전 05시 34분"var arr = time.components(separatedBy: " ") arr[1] = String(arr[1].dropLast()) // 00 "시" 삭제arr[2] = String(arr[2].dropLast())// 00 "분" 삭제print(arr)// return arr = ["오전","05","34"] 이런 식으로 마지막 글자를 지울 수 있음. 🟠 응용 🟠dropLast의 파라미터로 숫자를 주게되면 뒤에서 원하는 만큼 문자를 없앨 수 있다.❗️주의❗️문자열의 길이보다 더 많이 지울 수 있으니, 그 점을 항상 생각하자

[RxSwift] TextView 🆚 TextField

✅ 이번 시간에는 TextView와 TextField에 대해서 비교해볼 예정이야 아래의 이미지를 우선 보자. 맨 위에는 텍스트 필드 아래에는 텍스트 뷰를 활용하여 작성하였다. ✅ 둘의 대표적인 차이를 우선 ㅏㅇㄹ아보자. 🆚 TextField TextView placeholder가 있는가? O X 여러줄로 작성할 수 있는가? X O ✅ 그러면 아번에는 rx를 사용할때는 어떤 차이가 있을까? 🟠 내가 프로젝트에서 사용한 코드. 쉽게 말해서 TextView를 입력하기 시작했을 때, rx를 통해서 어떻게 처리하는지를 볼 수 있었다. RequestTextView.rx.didBeginEditing .bind{ _ in if self.RequestTextView.text == "간단한 메시지를 적어보세요~!" { s..

[RxSwift] button isSelected scan으로 토글처럼 사용하기

(init) 2021. 9. 8. 16:09 (update) 2022. 6. 8 13:23 - 이 당시에는 Realy에 대한 이해가 부족해서 Scan으로 처리했었는데, Relay로 만든 것을 구독하면 이전 값을 보유하고 있어서 Scan을 굳이 사용하지 않아도 됩니다. 해당 정보는 Yapp 면접 당시 면접관님이 주셨는데, 불현듯 떠올라서 적어둡니다. 혹시라도 보신다면 Relay 사용하세요 (update) 2022. 06. 27. 13:14 - 당시에는 코딩 컨벤션을 몰라서 변수명이 엉망진창이네요 ... - 스타일쉐어 swfit 코드 컨벤션을 찾아봐주세요. 이거 막장입니ㅏㄷ. .. 하.. 그냥 이런 것도 있구나 하면 될 거 ㅅ ㅆ같ㅌ습ㄴ니ㅣ다.. ✅ 이번 시간에는 RxSwift를 이용하여 버튼 상태 변화를 ..

RxSwift Reentrancy anomaly was detected. Error

RxSwift Reentrancy anomaly was detected. Error  MVVM 코드를 작성할 때 Delegate Pattern을 주로 Closure를 활용해서 코드를 작성했었는데, RxSwift를 공부하면서 사용하니까 아직까지는 어렵다 ㅜ코드가 깔끔해지고, 생산성이 크게 올라가는 것은 확실히 느끼고 있지만 아직 숙련도가 30% 정도 밖에 안되는 것 같다  발생한 에러 콘솔 로그아래와 같은 이슈가 밠애함.아직까지 개발 초보자라 그런가 이런 오류보면 글을 읽어보기 보다 복붙해서 구글링하기 바쁜데, 해결 방법이 콘솔에 다 나와있음.  ⚠️ Reentrancy anomaly was detected. > Debugging: To debug this issue you can set a breakp..

RxSwift Textfield maxLength

RxSwift Textfield maxLength RxSwift를 활용하여 텍스트 필드의 최대 글자 길이를 정하는 방법 스크린샷 요구사항년, 월, 일의 경우에는 글자 길이를 제한할 필요가 있음.연도 : 4글자 제한월, 일 : 2글자 제한  글자 길이를 제한하는 방법 1. 글자 길이를 제한하는 함수를 작성한다./// 두자리만 가져옴private func truncateHourToTwoDigits(_ str: String) { if str.count > 2 { let index = str.index(str.startIndex, offsetBy: 2) self.HourTextField.text = String(str[.. 2. 해당 텍스트필드가 바인딩monthTextField.r..

iOS Tableview Cell 사이의 간격주기

iOS Tableview Cell 사이의 간격주기 히스토리2021.08.21: 포스팅 초기 작성2024.08.31: 포스팅 코드 정리 및 간격 주는 방식에 대한 고민 추가 샘플 코드 override func layoutSubviews() { super.layoutSubviews() // 테이블 뷰 프레임에 인셋 주기 contentView.frame = contentView.frame.inset( by: UIEdgeInsets( top: 0, left: 0, bottom: 12, right: 0 ) ) } 결과 스크린샷 테이블 뷰 안에 간격을 준 모습 간격 주는..

[iOS] TableView, CollectionView lastIndex 찾기

✅ 이번 시간에는 마지막 인덱스를 찾는 방법에 대해서 알아볼 예정이야. 우선 아래의 이미지를 보자 위처럼 구현을 해야하는 일이 생겼는데, 나는 컬렉션 뷰를 이용해서 구현했어. 그러나 마지막 index의 경우에는 위에 이미지를 보면 다르게 처리해야하는데, 마지막 인덱스를 구할 필요성을 느꼈어. ✅ 컬렉션 뷰에서 마지막 인덱스를 참조하는 코드 extension UICollectionView { // 마지막 인덱스 찾는 함수 구현하여 collectionView쪽에 넣어둠 Util로 나중에 빼기 func lastIndexpath() -> IndexPath { let section = max(numberOfSections - 1, 0) let row = max(numberOfItems(inSection: sect..

[iOS] StackView 사이에서 간격을 주는법

✅ 이번 시간에는 스택뷰 사이에서 간격을 주는 방법에 대해서 알아볼 예정이야. 스택뷰를 활용하기 위해서는 저기서 하나씩 해보자. Alignment와 Distribution을 활용하면 ok ✅ 실제 개발에서 스택뷰 때문에 고민했던 것 🟠 텍스트필드의 입력값이 주어지지 않은 상황에서 어떻게 처리해야 할까요? 위에 보이는 이미지를 구현해야 하는데 스택뷰를 사용해서 구현시 발견한 문제점이 스택뷰 - 텍스트필드(시) - 레이블(콜론) - 텍스트필드(분) 이런식으로 넣었는데, 처음에는 텍스트 필드의 입력값이 주어지지 않아서(텍스트 필드의 길이가 0이라는 말) UI가 초기에 배치될 때 레이블이분을 담당하는 텍스트 필드가 나머지 모든 영역을 억지로 채우는 것을 확인할 수 있었다. 무슨 말이냐면, 스택뷰의 길이를 10이..