function npc.main()
-- npc.jj_data = longmaishuju
local parent = GUI:Win_Create(npc.__cname, 0, 0, 0, 0, false, false, true, true, true, 0)
GUI:LoadExport(parent, "UI/XingShiHuFuUI")
npc._parent = parent
npc.ui = {}
npc.ui = G
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-29 20:21:56 |
👁️ 阅读: 2
你的代码错误在于重复添加了同一个子节点到ListView中。
错误分析:
1. `GUI:ListView_getItems()` 返回的是ListView中已有的所有子项
2. 在循环中,你试图将 `npc.ui.Panel_1` 这个固定的面板重复插入到ListView中
3. `GUI:ListView_insertCustomItem()` 要求插入的是新的、独立的控件对象,而不是已经存在于界面中的控件
修正方案:
```lua
function npc.main()
local parent = GUI:Win_Create(npc.__cname, 0, 0, 0, 0, false, false, true, true, true, 0)
GUI:LoadExport(parent, "UI/XingShiHuFuUI")
npc._parent = parent
npc.ui = GUI:ui_delegate(parent)
-- 设置位置
ssrSetWidgetPosition(parent, npc.ui.Image_1, 2, 0, 0, true, true)
-- 关闭按钮
GUI:addOnClickEvent(npc.ui.close, function()
npc.Close()
end)
-- 正确的方式:创建新的面板实例并插入
for i = 1, 5 do -- 假设需要5个条目
-- 创建新的面板实例
local newPanel = GUI:Widget_Create(npc.ui.ListView_1, "Panel_"..i, 0, 0, 100, 50)
-- 可以在这里设置新面板的内容
local text = GUI:Text_Create(newPanel, "Text_"..i, 10, 10, 16, "#ffffff", "条目"..i)
-- 插入到ListView
GUI:ListView_pushBackCustomItem(npc.ui.ListView_1, newPanel)
end
-- 入场动画
Action_slow_appear(npc._parent, 200, 3, 1)
end
```
关键点:
1. 每次循环都需要创建**新的控件实例**,不能重复使用同一个控件对象
2. 使用 `GUI:Widget_Create()` 创建新的面板
3. 使用 `GUI:ListView_pushBackCustomItem()` 添加到末尾,或者用 `GUI:ListView_insertCustomItem()` 插入到指定位置
记住:ListView中的每个子项都必须是独立的控件对象,不能重复添加同一个对象!
← 返回问答库