HipstuCAU / nyam_nyam

오늘 먹을 메뉴를 고민하고 있는 학우들을 위해 만들었습니다.
2 stars 0 forks source link

resetModule 함수와 불러오는 조건 리팩토링이 필요합니다. #81

Open feldblume5263 opened 1 year ago

feldblume5263 commented 1 year ago

80

해당 resetModule 코드가 단순히 HomeViewController의 viewWillAppear에서 작동하기 때문에 두가지 문제가 발생합니다.

  1. 실제로 값이 바뀌지 않더라도 홈으로 돌아오면 무조건 다시 그리게 됩니다.

  2. 앱이 시작했을 때, layout 부분이 두번 실행됩니다. (viewDidLoad에도 있으므로)

    public func resetModule() {
        viewModel.indexOfDate.value = 0
        viewModel.indexOfCafeteria.value = 0

        viewModel.currentCampus.remove(observer: self)

        campusSelectView.removeFromSuperview()
        dateSelectView.removeFromSuperview()
        cafeteriaSelectView.removeFromSuperview()

        campusSelectView = CampusSelectView()
        dateSelectView = DateSelectView(dateList: viewModel.dateList)
        cafeteriaSelectView = CafeteriaSelectView(viewModel: viewModel)

        setCampusSelectViewLayout()
        setDateSelectViewLayout()
        setCafeteriaSelectViewLayout()

        campusSelectView.delegate = self
        dateSelectView.delegate = self
        cafeteriaSelectView.cafeteriaDelegate = self

        setCampusLabelText()

        viewModel.currentCampus.observe(on: self) { [weak self] _ in
            self?.setCampusLabelText()
            self?.resetCafeteriaView()
            self?.initOptionIndex()
        }

        let index = viewModel.indexOfCafeteria.value
        cafeteriaSelectView.setScrollOffsetBy(buttonIndex: index)
        cafeteriaSelectView.buttons.forEach {
            if $0.buttonIndex == index { $0.isSelected() }
            else { $0.isNotSelected() }
        }
    }