---@type IDBasePanel local TRBasePanel = require("ui.panel.TRBasePanel") ---@class TRPCheckBoxs:TRBasePanel 邮件列表 local TRPCheckBoxs = class("TRPCheckBoxs", TRBasePanel) local uiobjs = {} local toggles = {} -- 初始化,只会调用一次 function TRPCheckBoxs:init(csObj) TRPCheckBoxs.super.init(self, csObj) self:setEventDelegate() local offset = getChild(self.transform, "Bottom/offset") uiobjs.Grid = getCC(offset, "Content/Grid", "CLUILoopGrid") uiobjs.LabelSelected = getCC(offset, "LabelSelected", "UILabel") end -- 设置数据 ---@param paras _ParamTRPCheckBoxs function TRPCheckBoxs:setData(paras) self.mdata = paras[0] self.defaultValue = paras[1] self.selecteds = {} local strs = strSplit(self.defaultValue, "|") for i, v in ipairs(strs) do self.selecteds[v] = true end self.isMultMode = paras[2] self.callback = paras[3] end -- 显示,在c#中。show为调用refresh,show和refresh的区别在于,当页面已经显示了的情况,当页面再次出现在最上层时,只会调用refresh function TRPCheckBoxs:show() uiobjs.LabelSelected.text = "请选择" local strs = strSplit(self.mdata.attrValue, "|") toggles = {} for i, v in ipairs(strs) do local d = {label = v, isMultMode = self.isMultMode, checked = self.selecteds[v], panel = self} table.insert(toggles, d) end uiobjs.Grid:setList(toggles, self:wrapFunc(self.initCell)) self:onClickToggle() end function TRPCheckBoxs:initCell(cell, data) cell:init(data, nil) end -- 刷新 function TRPCheckBoxs:refresh() end function TRPCheckBoxs:onClickToggle() local val = self:getValue() if isNilOrEmpty(val) then uiobjs.LabelSelected.text = "请选择" else uiobjs.LabelSelected.text = joinStr("已选择:", val) end end -- 关闭页面 function TRPCheckBoxs:hide() end -- 网络请求的回调;cmd:指命,succ:成功失败,msg:消息;paras:服务器下行数据 function TRPCheckBoxs:procNetwork(cmd, succ, msg, paras) if (succ == NetSuccess) then --[[ if cmd == xx then end ]] end end function TRPCheckBoxs:getValue() local values = {} for i, v in ipairs(toggles) do if v.checked then table.insert(values, v.label) end end return table.concat(values, "|") end function TRPCheckBoxs:setEventDelegate() self.EventDelegate = { SpriteBg = function() hideTopPanel(self.csSelf) end, ButtonClose = function() hideTopPanel(self.csSelf) end, ButtonOkay = function() Utl.doCallback(self.callback, self:getValue()) hideTopPanel(self.csSelf) end } end -- 处理ui上的事件,例如点击等 function TRPCheckBoxs:uiEventDelegate(go) local func = self.EventDelegate[go.name] if func then func() end end -- 当顶层页面发生变化时回调 function TRPCheckBoxs:onTopPanelChange(topPanel) end -------------------------------------------- return TRPCheckBoxs