UICustomerServiceTipsView.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. local UICustomerServiceTipsView = require("UIVip/UICustomerServiceTipsView_Generate")
  2. function UICustomerServiceTipsView:OnAwake(data)
  3. self.controller = require("UIVip/UICustomerServiceTipsCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UICustomerServiceTipsView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  9. end
  10. function UICustomerServiceTipsView:FillContent(data, uiBase)
  11. self.uiBase = uiBase
  12. local gameObject = self.uiBase:GetRoot()
  13. if gameObject ~= nil then
  14. self.gameObject = gameObject
  15. self.transform = gameObject.transform
  16. end
  17. self:InitGenerate(self.transform, data)
  18. self:Init()
  19. end
  20. function UICustomerServiceTipsView:Init()
  21. local parent = self.texts.transform
  22. self.sourceGo = parent:Find('Contact').gameObject
  23. local itemLuas = self.itemLuas
  24. if not itemLuas then
  25. itemLuas = {self:GetItemLua(self.sourceGo)}
  26. self.itemLuas = itemLuas
  27. end
  28. local datas = self.controller:GetData()
  29. local len1 = datas and #datas or 0
  30. local len2 = #itemLuas
  31. local itemLua = nil
  32. local data = nil
  33. for i = 1, len1 do
  34. data = datas[i]
  35. itemLua = itemLuas[i]
  36. if not itemLua then
  37. local newGo = CommonUtil.Instantiate(self.sourceGo, parent)
  38. itemLua = self:GetItemLua(newGo)
  39. itemLuas[i] = itemLua
  40. end
  41. if itemLua then
  42. if data then
  43. itemLua.go:SetActive(true)
  44. itemLua.nameTxt.text = data.name or ''
  45. itemLua.contentTxt.text = data.account or ''
  46. self.uiBase:AddButtonUniqueEventListener(itemLua.copyBtn, self, self.OnClickCopyBtn, i)
  47. else
  48. itemLua.go:SetActive(false)
  49. end
  50. end
  51. end
  52. for i = len1 + 1, len2 do
  53. itemLua = itemLuas[i]
  54. if itemLua then
  55. itemLua.go:SetActive(false)
  56. end
  57. end
  58. end
  59. function UICustomerServiceTipsView:RemoveEventListener()
  60. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  61. end
  62. function UICustomerServiceTipsView:AddUIEventListener()
  63. self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickCloseBtn)
  64. end
  65. function UICustomerServiceTipsView:OnHide()
  66. end
  67. function UICustomerServiceTipsView:OnShow(data)
  68. self.controller:SetData(data)
  69. end
  70. function UICustomerServiceTipsView:OnClose()
  71. end
  72. function UICustomerServiceTipsView:OnDispose()
  73. self:DisposeItemLuas()
  74. self.sourceGo = nil
  75. self.controller:OnDispose()
  76. end
  77. function UICustomerServiceTipsView:OnClickCloseBtn()
  78. self:UIClose()
  79. end
  80. function UICustomerServiceTipsView:OnClickCopyBtn(_, params)
  81. local idx = params[0]
  82. if not idx then
  83. return
  84. end
  85. local datas = self.controller:GetData()
  86. if not datas then
  87. return
  88. end
  89. local data = datas[idx]
  90. if not data or not data.account or data.account == '' then
  91. return
  92. end
  93. UnityEngine.GUIUtility.systemCopyBuffer = data.account
  94. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('CopySucceed')
  95. end
  96. function UICustomerServiceTipsView:GetItemLua(itemGo)
  97. if not itemGo then return nil end
  98. local itemLua = {}
  99. itemLua.go = itemGo
  100. local trans = itemGo.transform
  101. itemLua.nameTxt = trans:Find('Text1'):GetComponent(Enum.TypeInfo.Text)
  102. itemLua.contentTxt = trans:Find('Text2'):GetComponent(Enum.TypeInfo.Text)
  103. itemLua.copyBtn = trans:Find('BtnCopy'):GetComponent(Enum.TypeInfo.Button)
  104. return itemLua
  105. end
  106. function UICustomerServiceTipsView:DisposeItemLuas()
  107. if not self.itemLuas then
  108. return
  109. end
  110. for _, itemLua in pairs(self.itemLuas) do
  111. if itemLua then
  112. local go = itemLua.go
  113. itemLua.go = nil
  114. itemLua.nameTxt = nil
  115. itemLua.contentTxt = nil
  116. itemLua.copyBtn = nil
  117. if go and go ~= self.sourceGo then
  118. CommonUtil.DestroyGO(go)
  119. end
  120. end
  121. end
  122. self.itemLuas = nil
  123. end
  124. return UICustomerServiceTipsView