Skip to content

Hansolkkim/issue-tracker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

261 Commits
 
 
 
 
 
 
 
 

Repository files navigation

header

Issue Tracker

GitHub에서 사용하는 Issue, label, milestone을 관리할 수 있는 앱입니다.

🗓 프로젝트 기간

2022.06.13 ~ 2022.07.01

👀 Screenshots

SS2022-07-06PM03 28 08 SS2022-07-06PM03 37 29 SS2022-07-06PM03 37 45 SS2022-07-06PM03 37 47 SS2022-07-06PM03 37 53 SS2022-07-06PM03 38 00 SS2022-07-06PM03 38 02

SS2022-07-06PM04 27 22

📌 Keywords

Architecture: MVVM, Clean Architecture

Library: SwiftLint, SnapKit, SwiftyMarkdown

🔥 Trouble Shooting

  1. Delegate 책임을 ViewController로부터 분리하여 발생하는 불필요한 통신 로직(Delegate/ Observer) 제거

    • 기존에 ViewController에 있던 Delegate 역할을 분리하여 새로운 객체를 만들다보니, Delegate 객체와 ViewController간 통신 로직이 필요한 상황이 발생했습니다.

    • 이 문제를 해결하고자, TextFieldDelegate의 경우에는 ViewController에서 ViewModel과 Delegate 역할을 할 TextField의 Action과 바인딩을 해주어 TextFieldDelegate를 제거하여 불필요한 통신 로직을 제거할 수 있었습니다.

       // EditingIssueViewController
       func bind(to viewModel: EditingIssueViewModelProtocol) {
           ...
           titleViewComponents.titleTextField.addAction( UIAction { [weak self] _ in
               viewModel.didChangeTitleText(self?.titleViewComponents.titleTextField.text)
           })
           ...
       }
    • TextView의 경우에는 addAction 메소드를 사용할 수 없기 때문에, Delegate 메소드가 실행될 때 진행될 클로저 타입의 변수를 추가하여 불필요한 통신 로직을 제거할 수 있었습니다.

       final class EditingIssueTextViewDelegate: NSObject, UITextViewDelegate {
           private var onUpdateText: (String) -> Void = { _ in }
       
           func setTextViewAction(_ action: @escaping (String) -> Void) {
               onUpdateText = action
           }
       
           func textViewDidChange(_ textView: UITextView) {
               onupdate(textView.text)
           }
           ...
       }
       
       
       final class EditingIssueViewController: UIViewController {
           ...
           func bind(to viewModel: EditingIssueViewModelProtocol) {
               ...
               textViewDelegate.setTextViewAction(viewModel.didChangeContentText(_:))
               ...
           }
       }

About

[Team- 09] 그룹 프로젝트#5

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Swift 57.1%
  • Java 42.0%
  • Other 0.9%