diff --git a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift index b9685f0..725ef38 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Common/UIComponets/HMHSelectButton.swift @@ -4,6 +4,9 @@ // // Created by Seonwoo Kim on 1/3/24. // +protocol HMHSelectButtonDelegate: AnyObject { + func updateAvailability(isEnabled: Bool) +} import UIKit @@ -11,6 +14,8 @@ import SnapKit import Then final class HMHSelectButton: UIButton { + weak var delegate: HMHSelectButtonDelegate? + @frozen enum HMHSelectButtonType { case solitary @@ -105,14 +110,15 @@ final class HMHSelectButton: UIButton { } setChecked(true) + setAvailability() case .multiple: let selectedCount = (superview?.subviews.compactMap { ($0 as? HMHSelectButton)?.isChecked } ?? []).filter { $0 }.count if selectedCount < 2 || isChecked { setChecked(!isChecked) + setAvailability() } - case .disabled: return } @@ -121,4 +127,19 @@ final class HMHSelectButton: UIButton { func setButtonText(buttonTitle: String) { buttonContentLabel.text = buttonTitle } + + func setAvailability() { + if (superview?.subviews.compactMap { ($0 as? HMHSelectButton)?.isChecked } ?? []).filter { $0 }.count == 0 { + updateAvailability(status: false) + } else { + updateAvailability(status: true) + } + + } + + @objc + func updateAvailability(status: Bool) { + self.delegate?.updateAvailability(isEnabled: status) + print("tap") + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift index 5b1c6c7..cd9e067 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/OnboardingBaseViewControllers.swift @@ -16,7 +16,6 @@ protocol NextViewPushDelegate: AnyObject { class OnboardingBaseViewController: UIViewController { weak var delegate: NextViewPushDelegate? - let mainTitleLabel = UILabel().then { $0.textColor = .whiteText $0.font = .iosTitle1Semibold22 @@ -32,13 +31,13 @@ class OnboardingBaseViewController: UIViewController { var nextButtonText: String = StringLiteral.OnboardingButton.next var mainTitleText: String = "" var subTitleText: String = "" - let navigationBar = HMHNavigationBar(leftItem: .normal, + let navigationBar = HMHNavigationBar(leftItem: .normal, isBackButton: true, isTitleLabel: false, isPointImage: false, isBackGroundGray: false) let progressBar = ProgressBarManager.shared.progressBarView - lazy var nextButton = OnboardingButton(buttonStatus: .enabled) + lazy var nextButton = OnboardingButton(buttonStatus: .disabled) var step = 0 override func viewWillAppear(_ animated: Bool) { @@ -102,6 +101,16 @@ class OnboardingBaseViewController: UIViewController { func onTapButton() { self.delegate?.didTapButton() } + + func updateNextButtonStatus(buttonStatus: Bool) { + if buttonStatus { + self.nextButton.backgroundColor = .bluePurpleButton + self.nextButton.isEnabled = true + } else { + self.nextButton.backgroundColor = .gray4 + self.nextButton.isEnabled = false + } + } } diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift index eb50dbe..a82e76c 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/ProblemSurveyViewController.swift @@ -58,6 +58,11 @@ final class ProblemSurveyViewController: OnboardingBaseViewController { surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.secondSelect) surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.thirdSelect) surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.ProblemSurveySelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self } } @@ -68,3 +73,9 @@ extension ProblemSurveyViewController: NextViewPushDelegate { } } +extension ProblemSurveyViewController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + print("taptap") + updateNextButtonStatus(buttonStatus: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift index 588efb6..32e8bd7 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/ViewControllers/TimeSurveyViewController.swift @@ -58,6 +58,11 @@ final class TimeSurveyViewController: OnboardingBaseViewController { surveyView.secondButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.secondSelect) surveyView.thirdButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.thirdSelect) surveyView.fourthButton.setButtonText(buttonTitle: StringLiteral.TimeSurveySelect.fourthSelect) + + surveyView.firstButton.delegate = self + surveyView.secondButton.delegate = self + surveyView.thirdButton.delegate = self + surveyView.fourthButton.delegate = self } } @@ -67,3 +72,10 @@ extension TimeSurveyViewController: NextViewPushDelegate { self.navigationController?.pushViewController(nextViewController, animated: false) } } + +extension TimeSurveyViewController: HMHSelectButtonDelegate { + func updateAvailability(isEnabled: Bool) { + print("taptap") + updateNextButtonStatus(buttonStatus: isEnabled) + } +} diff --git a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift index 3f0ddd1..cf443ae 100644 --- a/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift +++ b/HMH_iOS/HMH_iOS/Presentation/Onboarding/Views/OnboardingButton.swift @@ -17,7 +17,7 @@ final class OnboardingButton: UIButton { case disabled } - private var type: OnboardingButtonType = .disabled + var type: OnboardingButtonType = .disabled private let buttonTitleLabel = UILabel().then { $0.textColor = .whiteText