Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team05 - iOS] 네번째 PR #297

Open
wants to merge 19 commits into
base: team-05
Choose a base branch
from

Conversation

JasonLee0223
Copy link
Collaborator

안녕하세요 GangWoon!
금일까지 작업한 내용은 Mapkit을 사용하여 SearchBar에서 자동완성기능을 구현하는게 목표였는데 마무리가 되지 않았습니다..ㅠㅠ
많이 고민해보았는데 해결이 잘안되어 최대한 구현된 부분까지 작성하였습니다.

최대한 기한에 맞춰 작성해보려고 노력해봤는데 속시원하게 되지않아 PR로 문의드리며 추가 작업하여 Push를 해볼 생각입니다!
프로젝트 기간동안 컨디션이 많이 안좋으셨는데 리뷰해주셔서 감사합니다!!

🧑🏼‍💻 작업 목록

  • Cocoapods로 SwiftLint 설치
  • SPM을 사용하여 Snapkit 설치해보기
  • Mapkit을 이용하여 검색자동완성기능 구현하기
    • LocationTableView 생성 및 구현
    • LocationViewCell 생성 및 구현
    • LocationViewController를 SearchViewController에서 TransitionView로 사용
    • SearchBar에서 키워드를 입력하면 아래 지역 또는 Spot이 나오도록 구현

💭 학습 키워드

  • SearchController
  • UITableViewController & UITableView
  • SearchBarDelegate & TableViewDelegate
  • DataSource
  • Mapkit

🤔 고민과 해결

  • 처음 HomeViewController에서 다음 ViewController로 넘어가는 과정을 진행할 때 addChild를 사용하여 진행하는 것으로 생각하였습니다.
    func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) 메서드를 사용하여 다음 화면으로 넘어갈 수 있다는 것을 알게되었습니다.
    → (추가) UISearchController를 생성할 때 searchResultsController: 에 다음 ViewController를 호출하는 방법도 알게되어 적용해보았습니다.

  • 이번에 혼자 진행하게되면서 그동안 delegate 패턴에 대해 잘와닿지않았는데 많이 이해하게된 것 같습니다.
    DataSource → API 또는 Mockup-Data를 통해 UI에 그려질 Data를 처리하는 곳이며 따로 분리하여 관리하는게 좋다.
    Delegate → View의 변화를 알려주는 역할로 앞으로 Observer 또는 NotificationCenter를 통해 View의 변화를 알 수 있게 해주는 방법을 시도해보아야겠습니다.

  • 전반적으로 혼자 진행하게되면서 전체적인 앱의 흐름을 많이 체득화시킬수 있었던 프로젝트였던 것 같습니다!

💬 실행 화면

Simulator Screen Recording - iPhone 13 Pro - 2022-06-10 at 13 34 37

🙋🏻 질문 거리

현재 구현과정에서 가장 많이 막힌 부분이 2가지입니다.

  1. SearchView와 LocationView의 레이아웃(collection ≠ table)이 달라서 출력이 안되는 것인가..?
    지금까지 아래의 그림과 같이 구현하였는데 SearchViewController에서 LocationViewController로 넘어가는 시점에서 SearchView는 CollectionView를 사용하였고 LocationView는 TableView를 사용하여 화면을 전환하려고합니다. LocationVC에서 TableView가 잘 들어가있는 것까지는 확인이 되지만 필요한 delegate 및 datasource를 구현하였는데도 출력되지않는 부분에서 고민이 되는 부분이었습니다.

  2. LocationViewCell에 추가한 UI들이 Register로 등록하였는데 왜 올라오지않을까…?
    LocationView의 TableView가 정상적으로 잘출력이되는데 Cell에서 추가하였던 UIImageView 또는 UILabel이 전혀 추가되지않았는데 하여 SearchBar에 입력하면 나타날까싶어 입력 후 window를 확인해보아도 추가되지않아서 이해가 잘 되지않았습니다.

@JasonLee0223 JasonLee0223 added the review-iOS Extra attention is needed label Jun 10, 2022
@JasonLee0223 JasonLee0223 self-assigned this Jun 10, 2022
@JasonLee0223
Copy link
Collaborator Author

질문1번에 대한 그림이 빠져 추가하였습니다!

static let identifier = "LocationViewCell"

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오버라이드하지 않는 메소드를 오버라이드 할 이유가 있을까요?

}

func updateSearchResults(for searchController: UISearchController) {
guard let text = searchController.searchBar.text else { return }

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의미가 있는 메소드일까요?

@GangWoon
Copy link

LocationViewCell에 추가한 UI들이 Register로 등록하였는데 왜 올라오지않을까…?
SearchView와 LocationView의 레이아웃(collection ≠ table)이 달라서 출력이 안되는 것인가..?

제가 질문을 정리했을때, 왜 LocalView화면이 원하시는 대로 노출되지 않는지에 대한 질문 같습니다.
그림을 그리셨을때, 서로 독립적인 ViewController가 상대방에 영향을 미친다고 판단을 하셨을까요?
어떤 부분에서 그런 느낌을 받으신걸까요?
추가적으로 Location DataSource를 디버깅 해보셨을까요? 원하는 시점에 셀을 꾸미고 있는지, 소스에서 바라보는 객체가 원하는 값이 있는 상태인지, 쓰레드의 시점이 메인인지 등등 여러가지 사항에 대해서 점검을 하셨는지 궁금합니다.

파일이 많아졌는데, 네이밍 규칙이 존재하지 않는 느낌을 받았습니다.
A는 List, B는 TableView등등 작성하신 이유에서 명확한 이유를 표시하시는 연습을 꾸준히 하셨으면 좋겠습니다.

프로젝트에서 노출되는 경고에 대해선 모두 해결하시고 푸시하는 습관을 들이셨으면 좋겠습니다.
엑스코드에서 판단했을때, 의미가 없는 코드라고 알려주는 좋은 신호이거든요.

복잡한 뷰에 대해서 작성하시면서, 데이터를 분류하시려고 노력하시는 모습이 좋았습니다.
자기만의 규칙을 정하면서 작성하시는 부분을 잊지마시고 추후 프로젝트를 진행하실때도 자기만의 규칙을 상대방에게 설명할 수 있는 코드를 작성하셨으면 좋겠습니다.

2천줄이라는 체인지가 너무 겁이 났지만, 대부분 뷰에 관한 작업이여서, 제가 크게 피드백 드릴 부분은 없었던 거 같습니다.
다만 system api를 공식문서에서 정의한 내용과 조금 다르게 해석하신 거 같아서 걱정이 들었습니다.
아니면 위 코맨트로 작성하신 부분을 제가 조금 다르게 이해했을 수도 있을 거 같네요.
제가 절대적인 평가자는 아니지만, 상대방에게 정보를 전달할 때 있어서, 오해의 여지가 있게 된다면 서로가 다른 생각을 할 수도 있습니다.

삼주동안 혼자 진행하시면서, 새롭게 알게 된 내용에 대해서 다른 사람에게 설명하신다 생각하시면서 정리를 하시면 좋을 거 같아요.
그동안 고생 많으셨습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-iOS Extra attention is needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants