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

Fix [#120] 모든 탭바 사라지는 오류 해결, 마이페이지 닉네임 변경 시 버튼 활성화/비활성화 처리 완료 #121

Merged
merged 2 commits into from
Jan 18, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,6 @@ final class MyPageAccountInfoViewController: UIViewController {
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.backgroundColor = .clear
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.donBlack]
self.tabBarController?.tabBar.isHidden = true
self.tabBarController?.tabBar.isTranslucent = true

let backButton = UIBarButtonItem.backButton(target: self, action: #selector(backButtonTapped))
self.navigationItem.leftBarButtonItem = backButton

Choose a reason for hiding this comment

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

이 코드 패치는 MyPageAccountInfoViewController 클래스의 코드입니다. 제가 짧게 코드 리뷰를 도와드리겠습니다.

  1. 탭 바 관련 코드는 주석 처리되어 있습니다. 현재 주석 처리되어 있으므로 탭 바가 숨겨지고 투명한 상태로 유지됩니다. 이 로직에 대해 추가적인 설명이 없으므로, 의도적으로 탭 바를 숨기고 투명하게 유지하는 것인지 확인해야 합니다. 만약 그렇다면, 문제가 있는 것은 아닙니다.

  2. self.navigationController?.navigationBar.isHidden = false: 네비게이션 바를 숨기는 코드가 필요 없다면, 이 라인을 삭제할 수 있습니다.

  3. self.navigationItem.leftBarButtonItem = backButton: 버튼을 왼쪽에 추가하기 위해 사용한 코드로 보입니다. 다만, backButton 변수가 어디서 정의되었는지 알 수 없어서 오류가 발생할 수 있습니다. backButton 변수를 정의하고 초기화했는지 확인해야 합니다.

요약하자면, 탭 바와 네비게이션 바의 동작을 확인하고, backButton 변수가 실행 전에 정상적으로 초기화되었는지 확인해야 합니다.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,6 @@ final class MyPageEditProfileViewController: UIViewController {
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.backgroundColor = .clear
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.donBlack]
self.tabBarController?.tabBar.isHidden = true
self.tabBarController?.tabBar.isTranslucent = true

let backButton = UIBarButtonItem.backButton(target: self, action: #selector(navBackButtonTapped))
self.navigationItem.leftBarButtonItem = backButton
Expand Down Expand Up @@ -134,14 +132,21 @@ extension MyPageEditProfileViewController {
output.isEnable
.receive(on: RunLoop.main)
.sink { isEnable in
print("\(isEnable)")
self.nicknameEditView.nickNameTextField.resignFirstResponder()
self.introductionEditView.postActiveButton.isHidden = !isEnable
if isEnable {
// 닉네임 사용 가능
self.nicknameEditView.duplicationCheckDescription.text = StringLiterals.Join.duplicationPass
self.nicknameEditView.duplicationCheckDescription.textColor = .donSecondary
self.introductionEditView.postButton.isHidden = true
self.introductionEditView.postActiveButton.isHidden = false
} else {
// 닉네임 중복
self.nicknameEditView.duplicationCheckDescription.text = StringLiterals.Join.duplicationNotPass
self.nicknameEditView.duplicationCheckDescription.textColor = .donError
self.introductionEditView.postButton.isHidden = false
self.introductionEditView.postActiveButton.isHidden = true
}
}
.store(in: self.cancelBag)

Choose a reason for hiding this comment

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

아래는 코드 패치입니다. 버그 위험 또는 개선 제안 사항을 간략히 검토해 드리겠습니다:

  • self.tabBarController?.tabBar.isHidden = trueself.tabBarController?.tabBar.isTranslucent = true 코드가 제거되었습니다. 이전에는 탭 바가 숨겨져 있고 투명했지만, 이제는 기본 설정으로 돌아갑니다.
  • print("\(isEnable)") 문장이 추가되어 isEnable 값을 출력합니다.
  • self.introductionEditView.postButton.isHiddenself.introductionEditView.postActiveButton.isHidden 속성이 조건에 따라 변경됩니다. 사용 가능한 닉네임인 경우 postButton은 숨겨지고 postActiveButton은 표시됩니다. 닉네임이 중복된 경우 그 반대로 처리됩니다.

개선 제안:

  • 코드에 주석을 추가하여 닉네임 사용 가능 및 중복 상황을 명확하게 설명할 수 있습니다.
  • 변수와 메소드 이름을 보다 명확하고 읽기 쉬운 방식으로 지정할 수 있습니다.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,10 @@ final class MyPageViewController: UIViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)

self.tabBarController?.tabBar.isTranslucent = true
self.tabBarController?.tabBar.isTranslucent = false
navigationBackButton.isHidden = true
self.navigationController?.navigationBar.backgroundColor = .clear
statusBarView.removeFromSuperview()
// navigationBackButton.removeFromSuperview()
}

override func viewDidLayoutSubviews() {
Expand Down Expand Up @@ -204,7 +203,8 @@ extension MyPageViewController {
private func setRefreshControll() {
refreshControl.addTarget(self, action: #selector(refreshData), for: .valueChanged)
rootView.myPageScrollView.refreshControl = refreshControl
refreshControl.backgroundColor = .donGray1
refreshControl.tintColor = .donGray1
refreshControl.backgroundColor = .donBlack
}

@objc

Choose a reason for hiding this comment

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

이 코드 패치에는 몇 가지 개선 사항과 버그 위험이 있습니다:

  1. viewWillDisappear() 메서드에서 self.tabBarController?.tabBar.isTranslucent 값을 false로 설정하는 것은 가능한 버그를 유발할 수 있습니다. 탭 바의 투명도를 변경할 때 다른 뷰와의 상호 작용이 예기치 않게 변경될 수 있습니다. 이 부분을 수정하고 해당 코드를 주석 처리한 것이 좋습니다.

  2. setRefreshControll() 메서드에서 refreshControl.backgroundColor 속성을 설정하는데, .donGray1과 .donBlack 색상을 사용하고 있습니다. 그러나 UIKit의 refreshControl에는 backgroundColor 속성이 없으므로 이 부분은 적절하지 않습니다. 대신에 tintColor를 설정하여 스피너의 색상을 변경하는 것이 더 나은 방법입니다.

개선 제안:

  • viewWillDisappear() 메서드에서 self.tabBarController?.tabBar.isTranslucent 설정 줄을 삭제합니다.
  • setRefreshControll() 메서드에서 refreshControl.backgroundColor 설정 줄을 삭제하고, refreshControl.tintColor를 설정하여 스피너 색상을 변경합니다.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,6 @@ final class NotificationViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

self.tabBarController?.tabBar.isHidden = false
self.tabBarController?.tabBar.isTranslucent = false
self.navigationController?.navigationBar.isHidden = false
self.navigationItem.hidesBackButton = true
}

Choose a reason for hiding this comment

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

안녕하세요! 아래는 코드 패치에 대한 간단한 코드 리뷰입니다. 버그 위험 및 개선 제안을 환영합니다:

  1. 탭 바 관련 부분에서의 변경 사항: self.tabBarController?.tabBar.isHidden = falseself.tabBarController?.tabBar.isTranslucent = false를 주석 처리하여 탭 바를 숨기고 투명하게 설정하는 기능을 비활성화시켰습니다. 만약 이 기능이 명시적으로 필요하다면, 주석 처리된 코드를 다시 활성화해야 합니다.

  2. 네비게이션 바 숨김 처리: self.navigationController?.navigationBar.isHidden = false로 인해 네비게이션 바가 보이도록 설정되었습니다. 이것은 viewWillAppear 메서드 내에서 수행되므로 다른 화면으로 전환할 때마다 네비게이션 바가 나타날 것입니다. 이 동작이 의도된 것인지 확인해보세요.

개선 제안:

  1. 코드의 다른 부분에서도 자세한 내용을 파악하려면 첨부된 코드의 더 많은 부분이 필요합니다.
  2. 일반적으로 코드 리뷰에서는 불필요한 주석이나 코드 줄을 제거하는 것이 좋습니다. 제공된 코드 조각은 단지 일부분이기 때문에 전반적인 구조와 목적을 파악하기 어렵습니다. 코드 리뷰를 진행하려면 해당 코드가 속한 프로젝트의 전체 구조와 목적을 이해할 필요가 있습니다.

코드 리뷰에 대한 자세한 도움이 필요하시다면, 더 많은 코드 세부 정보를 제공해주시기 바랍니다.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ final class PostViewController: UIViewController {
self.navigationItem.title = StringLiterals.Post.navigationTitleLabel
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.donBlack]
self.tabBarController?.tabBar.isHidden = false

let backButton = UIBarButtonItem.backButton(target: self, action: #selector(backButtonPressed))
self.navigationItem.leftBarButtonItem = backButton

Choose a reason for hiding this comment

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

여기에 제시된 코드 패치를 간략하게 코드 검토해 드리겠습니다.

이 코드의 목적은 PostViewController 클래스의 viewDidLoad() 메서드를 업데이트하는 것으로 보입니다.

  1. 변경 사항:

    • self.tabBarController?.tabBar.isHidden = false 코드가 추가되었습니다.
      • 이로 인해 해당 뷰 컨트롤러가 속한 탭 바의 표시 여부가 숨겨지지 않고 표시됩니다.
  2. 버그 위험성:

    • 코드를 볼 때 주요한 버그나 위험성을 직접적으로 발견할 수는 없습니다. 그러나 다른 연관된 코드로 인해 문제가 발생할 수도 있습니다. 예를 들어, 탭 바 아이템을 임의로 조작하거나 전환하는 부분이 존재한다면 다른 탭에서 이전 상태로 복원하는 로직이 있어야 할 수도 있습니다.
  3. 개선 제안:

    • 본문의 코드 조각만 보았을 때 큰 이슈는 발견되지 않았으며, 단순한 속성 변경으로 구성되어 있습니다.
    • 그러나 전반적인 애플리케이션의 아키텍처와 동작 방식을 고려했을 때, 이 변경이 예상대로 동작하는지 확인하기 위해 해당 코드의 주변 로직을 검토해야 합니다.
    • 또한, 이 코드에서 변경된 부분이 반드시 필요한지를 알아봐야 합니다. 탭 바를 보여줄 필요가 없는 특정 화면에서만 해당 코드를 실행하도록 로직을 제한해야 할 수도 있습니다.

결론적으로, 제시된 코드 패치는 단순한 속성 변경으로 구성되며 주요한 버그나 위험성은 발견되지 않았습니다. 그러나 전반적인 애플리케이션의 동작과 연관된 것이므로 코드의 주변 로직을 고려하여 검토해야 합니다.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,10 @@ final class WriteReplyViewController: UIViewController {

override func viewWillAppear(_ animated: Bool) {
bindViewModel()
self.tabBarController?.tabBar.isTranslucent = true
}

override func viewWillDisappear(_ animated: Bool) {
NotificationCenter.default.post(name: NSNotification.Name("DismissReplyView"), object: nil, userInfo: nil)
self.tabBarController?.tabBar.isTranslucent = false
}

override func viewDidLayoutSubviews() {

Choose a reason for hiding this comment

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

이 코드 패치를 간단히 검토해드리겠습니다.

  1. viewWillAppear() 메서드에서 tabBarisTranslucent 속성을 제거한 것은 괜찮아 보입니다. 그러나 bindViewModel()에 대한 추가 정보가 없어서 해당 메서드의 역할을 평가하기 어렵습니다.
  2. viewWillDisappear() 메서드에서 tabBarisTranslucent 속성을 제거한 것은 앱 사용 중에 탭 바 표시를 변경하지 않도록 하는 것 같습니다. 변경 사항이 탭 바와 관련되어 있는지 확인하는 것이 좋을 것 같습니다.
  3. viewDidLayoutSubviews() 메서드에는 변경된 내용이 없으므로 문제가 없습니다.

개선을 위한 몇 가지 제안:

  • bindViewModel()에 대한 설명 주석을 추가하여 역할과 목적을 명확하게 하십시오.
  • viewWillDisappear()의 경우, 변경된 tabBarisTranslucent 속성에 대한 주석을 추가하여 변경 이유를 설명하십시오.
  • 다른 메서드 또는 처리 로직이 필요한 경우 해당 내용을 추가하거나 수정하십시오.

전반적으로 코드 리뷰를 위해서는 해당 클래스 및 상위 클래스, 사용된 프레임워크/라이브러리 등의 전체적인 컨텍스트를 알아야 합니다. 이 자체 코드 패치만으로 한계가 있을 수 있습니다.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,13 @@ final class WriteViewController: UIViewController {

self.navigationController?.navigationBar.isHidden = false
self.navigationItem.hidesBackButton = false
self.tabBarController?.tabBar.isTranslucent = true
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)

self.navigationController?.navigationBar.isHidden = true
self.navigationItem.hidesBackButton = true
self.tabBarController?.tabBar.isTranslucent = false
}
}

Choose a reason for hiding this comment

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

이 코드 패치에는 다음과 같은 버그 위험 및 개선 제안사항이 있습니다:

  1. 장치의 회전 또는 화면 크기 변경 시 나타날 수 있는 오류가 있을 수 있습니다. 뷰가 사라지기 전에 super.viewWillDisappear(true)를 호출하는 것이 좋습니다.

  2. 주석: 코드에 주석이 없으므로 코드 이해와 유지 보수가 어려울 수 있습니다. 코드에 필요한 주석을 추가하는 것이 좋습니다.

  3. 사용되지 않는 코드: 두 개의 tabBar 관련 설정(isTranslucent)이 사용되지 않고 주석 처리되어 있습니다. 이러한 코드는 제거하는 것이 좋습니다.

  4. 일관성: viewWillAppear(_:)viewWillDisappear(_:)에서 네비게이션 바 및 백 버튼의 숨김 여부를 설정하고 있습니다. 일관된 방식으로 해당 설정을 처리하는 것이 좋습니다.

  5. 강력한 참조 순환(Retain cycle)을 방지하기 위해 [weak self]를 사용하여 셀프를 약한(weak) 참조로 선언하고 클로저 내에서 셀프를 캡처하는 것이 좋습니다.
    예시:

    DispatchQueue.main.async { [weak self] in
        self?.navigationController?.navigationBar.isHidden = false
        self?.navigationItem.hidesBackButton = false
    }

이외에도 해결하고자 하는 문제나 코드의 목적 등에 따라 개선할 점이 다를 수 있습니다. 추가적인 정보가 있다면 좀 더 구체적인 제안을 할 수 있습니다.

Expand Down