-- xx单元 do local _cell = {} local csSelf = nil local transform = nil local grid local dayPrefab = nil local mData = nil local dayList -- 初始化,只调用一次 function _cell.init(csObj) csSelf = csObj transform = csSelf.transform grid = getChild(transform, "Grid"):GetComponent("UIGrid") dayPrefab = getChild(grid.transform, "00000").gameObject end -- 注意,c#侧不会在调用show时,调用refresh function _cell.refresh(data, pageIndex) mData = data if (mData == nil) then mData = {} local curYear, curMonth = PanelCalender.getData() if (pageIndex < 0) then mData.year, mData.month = PanelCalender.getYYHH_ByaddMonth(curYear, curMonth, -6 + pageIndex) else mData.year, mData.month = PanelCalender.getYYHH_ByaddMonth(curYear, curMonth, -6 + pageIndex) end end dayList = _cell.resetCalender(mData.year, mData.month) CLUIUtl.resetList4Lua(grid, dayPrefab, dayList, _cell.initCellDay) end function _cell.doRefresh() CLUIUtl.resetList4Lua(grid, dayPrefab, dayList, _cell.initCellDay) end -- 取得数据 function _cell.getData() return mData end function _cell.initCellDay(cell, day) local data if cell.luaTable then data = cell.luaTable.getData() else data = {} end data.day = day local selectedYear, selectedMonth, selectedDay = PanelCalender.getSelectDate() if (mData.year == DateTime.Now.Year and mData.month == DateTime.Now.Month and day == DateTime.Now.Day) then data.isToday = true if selectedYear == nil then PanelCalender.setDefalutSelectDate(cell, mData.year, mData.month, day) end else data.isToday = false data.isSelected = false end data.isSelected = false local isDateRange, startDate, endDate = PanelCalender.getDateRangeDate() if isDateRange then local tmpDate = tonumber( joinStr( NumEx.nStrForLen(mData.year, 4), NumEx.nStrForLen(mData.month, 2), NumEx.nStrForLen(data.day, 2) ) ) if tmpDate and (startDate and tmpDate >= startDate) and (endDate and tmpDate <= endDate) then data.isSelected = true elseif tmpDate and (startDate and tmpDate == startDate) and endDate == nil then data.isSelected = true else data.isSelected = false end else if (mData.year == selectedYear and mData.month == selectedMonth and selectedDay == data.day) then data.isSelected = true PanelCalender.setDefalutSelectDate(cell, mData.year, mData.month, day) end end cell:init(data, _cell.onClickDay) end function _cell.onClickDay(cell) local d = cell.luaTable.getData() if (d.day == -1) then return end local selectedDay = cell.luaTable.getData().day local selectedMonth = mData.month local selectedYear = mData.year PanelCalender.setSelectDate(cell, selectedYear, selectedMonth, selectedDay) end function _cell.resetCalender(year, month) local list = ArrayList() local dayCount = DateEx.getMothDays(year, month) local week = DateEx.getWeek(year, month, 1) for i = 0, week - 1 do list:Add(-1) end for i = week, dayCount - 1 + week do -- print(i .. "-" .. week .. "+1"); list:Add(i - week + 1) end for i = dayCount + week, 41 do list:Add(-1) end return list end -------------------------------------------- return _cell end