local UICommonBG = UIViewClass() function UICommonBG:OnOpened(context) self.hasAnim = false self._parentView = context.parentView self._parentCloseFunc = context.parentCloseFunc self._parentToggleFunc = context.parentToggleFunc UIUtils.SetLabelText(self.lab_Title,context.titleText) self._index = context.subIndex or 1 self:RefreshToggleView(context.subViews, context.subIndex) self._toggles[self._index].isOn = false self._toggles[self._index].isOn = true self._infoBtnFunc = context.infoBtnFunc if context.infoBtnState then self:SetInfoBtnState(context.infoBtnState) end end function UICommonBG:RefreshToggleView(subViews, subIndex) if self.subViews ~= subViews then self.panelRoot:CloseAll() if self._parentView.GetToggleViewIndex then self._index = subIndex or self._parentView:GetToggleViewIndex(self._parentView.subViewName) or 1 end self.subViews = subViews else return end self._viewNames = {} self._viewClasses = {} for index, sub in ipairs(self.subViews) do self._viewNames[index] = sub[1] end self._marks = {self.mark_1, self.mark_2, self.mark_3, self.mark_4, self.mark_5} self._texts = {self.text_1, self.text_2, self.text_3, self.text_4, self.text_5} self._toggles = {self.toggle_1, self.toggle_2, self.toggle_3, self.toggle_4, self.toggle_5} for index, toggle in ipairs(self._toggles) do local sub = self.subViews[index] toggle.gameObject:SetActive(sub ~= nil) if sub then UIUtils.SetLabelText(self._texts[index],sub[2]) end end self._toggles[self._index].isOn = false self._toggles[self._index].isOn = true self.panelRoot:CloseAll() self.curPanel = self.panelRoot:OpenView(GetViewClass(self._viewNames[self._index])) self._parentView.subViewName = self._viewNames[self._index] end function UICommonBG:RefreshToggleRedPoint(index, active) self._toggles[index]:SetRedPoint(active) end function UICommonBG:OpenSubView(index) if self.hasAnim == false or index ~= self._index then self.hasAnim = true if self.ExchangeSubView == nil then self.ExchangeSubView = self:PlayUIAnimation("ExchangeSubView") else self:PlayUIAnimation(self.ExchangeSubView) end end if index ~= self._index then self.panelRoot:CloseAll() self.curPanel = self.panelRoot:OpenView(GetViewClass(self._viewNames[index])) self._index = index self._parentView.subViewName = self._viewNames[index] end end function UICommonBG:SetInfoBtnState(state) UIUtils.SetActive(self.btn_Info.gameObject, state) end function UICommonBG:OnButtonClicked(comp) if comp == self.btn_Back then self._parentCloseFunc(self._parentView) elseif comp == self.btn_Info then if self._infoBtnFunc then self._infoBtnFunc() end end end local SelectedColor = Color.New(1, 1, 1, 1) local UnSelectedColor = Color.New(213/255, 222/255, 244/255, 1) function UICommonBG:OnValueChanged(comp, state) if state then for index, toggle in ipairs(self._toggles) do if toggle == comp then self:OpenSubView(index) self._texts[index].color = SelectedColor UIUtils.SetActive(self._marks[index].gameObject, true) if self._parentToggleFunc then self._parentToggleFunc(index) end else self._texts[index].color = UnSelectedColor UIUtils.SetActive(self._marks[index].gameObject, false) end end end end return UICommonBG