라이브러리 정리
This commit is contained in:
@@ -60,6 +60,11 @@ namespace UVC.UI.Window
|
||||
/// </summary>
|
||||
public System.Action<TreeListItemData>? OnItemDeselected;
|
||||
|
||||
/// <summary>
|
||||
/// 메인/검색 리스트에서 항목의 가시성 상태가 변경될 때 발생합니다.
|
||||
/// </summary>
|
||||
public System.Action<TreeListItemData, bool>? OnItemVisibilityChanged;
|
||||
|
||||
// 검색 목록에서 선택된 항목(클론된 데이터)
|
||||
protected TreeListItemData? selectedSearchItem;
|
||||
|
||||
@@ -91,12 +96,14 @@ namespace UVC.UI.Window
|
||||
if (treeList != null)
|
||||
{
|
||||
treeList.OnItemSelectionChanged += HandleMainSelectionChanged;
|
||||
treeList.OnItemVisibilityChanged += HandleMainVisibilityChanged;
|
||||
}
|
||||
|
||||
// 검색 리스트의 선택 변경을 감지 (선택 결과를 원본 트리에 반영하는 용도)
|
||||
if (treeListSearch != null)
|
||||
{
|
||||
treeListSearch.OnItemSelectionChanged += OnSearchSelectionChanged;
|
||||
treeListSearch.OnItemVisibilityChanged += HandleMainVisibilityChanged;
|
||||
}
|
||||
|
||||
clearTextButton.onClick.AddListener(() =>
|
||||
@@ -291,7 +298,7 @@ namespace UVC.UI.Window
|
||||
if (changed)
|
||||
{
|
||||
//데이터 변경 알림
|
||||
originalItem.NotifyDataChanged(ChangedType.TailButtons, originalItem);
|
||||
treeListSearch.NotifyDataChanged(originalItem, ChangedType.TailButtons, originalItem);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -340,6 +347,11 @@ namespace UVC.UI.Window
|
||||
}
|
||||
}
|
||||
|
||||
protected void HandleMainVisibilityChanged(TreeListItemData data, bool isVisible)
|
||||
{
|
||||
OnItemVisibilityChanged?.Invoke(data, isVisible);
|
||||
}
|
||||
|
||||
protected void OnInputFieldSubmit(string text)
|
||||
{
|
||||
// 검색어가 있으면 검색 결과 목록 표시
|
||||
@@ -461,20 +473,39 @@ namespace UVC.UI.Window
|
||||
|
||||
protected void OnDestroy()
|
||||
{
|
||||
inputField.onSubmit.RemoveListener(OnInputFieldSubmit);
|
||||
clearTextButton.onClick.RemoveAllListeners();
|
||||
// 1. 검색 작업 취소 및 정리 (먼저 수행)
|
||||
CancelSearch();
|
||||
|
||||
// 2. 입력 이벤트 구독 해제
|
||||
if (inputField != null)
|
||||
{
|
||||
inputField.onSubmit.RemoveListener(OnInputFieldSubmit);
|
||||
}
|
||||
|
||||
if (clearTextButton != null)
|
||||
{
|
||||
clearTextButton.onClick.RemoveAllListeners();
|
||||
}
|
||||
|
||||
// 3. TreeList 이벤트 구독 해제
|
||||
if (treeListSearch != null)
|
||||
{
|
||||
treeListSearch.OnItemSelectionChanged -= OnSearchSelectionChanged;
|
||||
treeListSearch.OnItemVisibilityChanged -= HandleMainVisibilityChanged;
|
||||
}
|
||||
|
||||
if (treeList != null)
|
||||
{
|
||||
treeList.OnItemSelectionChanged -= HandleMainSelectionChanged;
|
||||
treeList.OnItemVisibilityChanged -= HandleMainVisibilityChanged;
|
||||
}
|
||||
|
||||
CancelSearch();
|
||||
// 4. 외부 이벤트 핸들러 정리
|
||||
OnItemSelected = null;
|
||||
OnItemDeselected = null;
|
||||
|
||||
// 5. 참조 정리
|
||||
selectedSearchItem = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user