表格设置单元格为预制体的情况下不会刷新这个预制体,因为条件写反了。

This commit is contained in:
2026-07-30 14:58:12 +08:00
parent a5616b6a06
commit f7931d41f1
8 changed files with 272 additions and 223 deletions
@@ -452,7 +452,9 @@ namespace XericUI.XTable.Rendering.Component
public void RemoveRow(int row)
{
if (TryEnqueueUpdateCommand(new UpdateCommand(UpdateCommandType.RemoveRow, row))) return;
var prefabCallbacks = CaptureActivePrefabReleaseCallbacks();
RemoveRowImmediate(row);
RebuildRenderBindings(prefabCallbacks);
}
private void RemoveRowImmediate(int row)
@@ -509,7 +511,9 @@ namespace XericUI.XTable.Rendering.Component
public void RemoveColumn(int col)
{
if (TryEnqueueUpdateCommand(new UpdateCommand(UpdateCommandType.RemoveColumn, col: col))) return;
var prefabCallbacks = CaptureActivePrefabReleaseCallbacks();
RemoveColumnImmediate(col);
RebuildRenderBindings(prefabCallbacks);
}
private void RemoveColumnImmediate(int col)
@@ -762,26 +766,16 @@ namespace XericUI.XTable.Rendering.Component
public void ClearData()
{
ThrowIfCheckingUpdate(nameof(ClearData));
var prefabCallbacks = CaptureActivePrefabReleaseCallbacks();
if (m_TableData != null)
{
// 清理预制体:先调用 OnPrefabRelease 再清理映射
if (m_ActivePrefabMap != null)
{
foreach (var kv in m_ActivePrefabMap)
{
var cellData = m_TableData.GetCell(kv.Key.Item1, kv.Key.Item2);
cellData?.OnPrefabRelease?.Invoke(kv.Value);
}
m_ActivePrefabMap.Clear();
}
m_PrefabPool?.ReturnAll();
m_TableData.ClearAllMerges();
m_TableData.BlockMap.Clear();
m_StyleNamespaceDirty = true;
}
m_Quadtree?.Clear();
ClearSelection();
RebuildRenderBindings(prefabCallbacks);
MarkDirty(TableDirtyType.DataChanged);
RefreshView();
}