개발/Swift
-
[Swift] Cell 에 init 을 하고싶을때개발/Swift 2022. 8. 16. 16:22
Cell init 에 관해 table cell 이던 collection view cell 이건 cell은 init 할때 parameter를 넣어서 init 할 수가없다. init(color:UIColor) { } 그래서 override init 함수를 써야하고 만약 cell 에 속성을 부여하고 싶다면 이런식으로 넣어준다 guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ACell", for: indexPath) as? ACell else { fatalError("ACell error")} cell.color = .red 하지만 reloadData() 가 일어나거나 하면 위의 함수는 한번 더 발생하게 된다. 만약 init()..
-
[Swift] ReloadData 호출시 키보드 사라지는 오류개발/Swift 2022. 8. 15. 15:17
ReloadData 호출시 키보드 사라지는 오류 Collection view 에서 데이터를 갱신할떄 reloadData()를 사용한다. textfiled 가 search 되는 시점에 reloadData() 를 호출했었는데 textfield가 editing 되는 시점에 reloadData()를 호출해야하는 요구 사항이 발생했다. 그래서 textEditing 되는 시점에 리스트를 필터링하여 reloadData를 호출했더니 키보드가 사라지는 현상이 발생했다 흔히 textField.resignFirstResponder() 함수가 실행되면 키보드가 사라지는데 해당 함수를 실행시키고 있지는 않았다. 그러므로 reloadData()가 호출되면 firstResponder가 자동으로 바뀌는것같았다. 구글링 이후에 가장 ..
-
[TIL] 라이브러리 배포시 주의사항 (접근제한자, 리소스관리)개발/Swift 2022. 7. 8. 08:38
라이브러리 배포시 접근제한자 라이브러리 에서 작성한 함수를 외부에서 접근해야할때 public 제한자를 꼭 붙여야한다. default로는 internal이 되어서 외부 접근이 불가하다. 따라서 만약 외부에서 생성해야할 init 함수역시 모두 public 으로 작성 되어야한다. 라이브러리 리소스(이미지) 관리 이미지 같은경우 xcassets 파일을 Assets 폴더 안에 두면 된다. 이후 podspec 에서 경로를 이렇게 수정해주었다. s.resource_bundles = { 'LuxModuleKit' => ['LuxModuleKit/Assets/Resources/*.{xcassets}'] }
-
[TIL] Cell highlighted UI변경, removeFromSuperview 안되는 경우개발/Swift 2022. 7. 8. 08:37
Collection view cell 버튼처럼 Highlited 상태시 UI 변경 override var isHighlighted: Bool collectionviewCell 에는 isHighlighted 값이있다. 만약 cell이 눌려서 highlighted 상태가 되면 값이 true 풀리면 false로 바뀐다 여기서 didSet을 활용해서 원하는 작업을 할수있다 override var isHighlighted: Bool { didSet { if isHighlighted { setHighlightedUI() } else { setNormalUI() } } } removeFromSuperview 오버라이딩 시 주의할것 func removeAllSubviews() { for view in subviews ..
-
[Github action IOS] CI/CD Testflight 자동화 배포 하기개발/Swift 2022. 5. 19. 12:44
[iOS] Swift Modern Collection View & MVVM 패턴 가이드 강의 - 인프런 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., Swift iOS UI, 제대로 다루는 핵심 기술! 📲 iOS Swift 레이아웃 구현을 www.inflearn.com 테스트플라이트 배포까지 여러 정보들을 필요로한다. Certification & Provisioning profile 암호화 파일 Certification & Provisioning profile 암호 비밀번호 Certification 비밀번호 ExportOptions.plist Appstore issuer id App..
-
[Github Action IOS] Pod install 할때 private repo(pod) 권한 관련 에러개발/Swift 2022. 5. 16. 14:37
private repo pod 을 프로젝트에서 사용하고있다면 podfile을 보면 이렇게 pod 'Private-Pod' , :git => "" 쓰고 있을것이다. 혹은 ssh 경로 를 사용할것이다. 로컬 환경에서 pod install을 실행시 문제없이 설치가 된다. 만약 설치가 안된다면 로컬 환경에서 git 계정 정보가 keychain에 저장이 되지 않아서이다. priavate pod 에 접근하기 위해서는 접근 가능한 git 계정에대한 정보가 필요하다. username 과 password 일것이다. password 는 PAT 토큰으로 대체되었다. 따라서 username, PAT(PERSONAL_ACCESS_TOKEN) 토큰이 필요하고 로컬환경에서는 이 정보가 키체인에 저장되어있다. 그래서 pod inst..
-
[Swift] AssociatedType 추상클래스에서의 사용개발/Swift 2022. 5. 5. 18:47
protocol AbstractRepository{ func create(model :Model) -> Model } 추상화된 리포지토리를 protocol로 구현했다. 이렇게 추상화된 리포지토리를 사용하면 구체화될 리포지토리에서 함수를 상속받아 구현 할수있다. 그러나 만약 Model이 구체화될 리포지토리마다 다르다면 어떻까 class UserRepository{ func create(model :User) -> User {} } class ProductRepository{ func create(model :Product) -> Product {} } 이때 우리는 associatedType을 사용한다. protocol AbstractRepository{ associatedtype Model : Domain..
-
[Swift] Drag&Drop Interaction CustomValue 전달개발/Swift 2022. 5. 2. 15:22
요구사항 뷰는 UIViewController 와 UITableView가있다. UITableView에 있는 아이콘을 드래그하여 UIview에 드랍해야한다. 드래그 → 드랍 과정에서 데이터가 오가야한다. (Model) UIView 에 드랍이 되면 UITableView에 있는 아이콘을 드랍하는게 아니라 다른 View를 그려야한다. 일반적인 Drag & Drop 은 UIImage를 전달한다. 하지만 요구사항에 충족하려면 UIImage를 전달해서는 안된다. 어떤 데이터를 받고 그 데이터를 기반으로 새로운 View를 그려야한다. 그러려면 전달하려는 데이터의 클래스(타입)이 ``NSItemProviderReading , NSItemProviderWriting 을 상속하면 된다. 그렇지 않으면 dropSession에서..