refactor(UI): 修复弹窗返回栈逻辑并优化代码

1. 将TimeSelection的OnCancelClick改为public方法方便外部调用
2. 统一各弹窗的返回注册逻辑,修复返回栈未重置的问题
3. 修正代码缩进和空行格式问题
This commit is contained in:
“虞渠成” 2026-09-17 16:52:44 +08:00
parent 0a0a935c01
commit 8a4e2602ff
4 changed files with 49 additions and 8 deletions

View File

@ -51,7 +51,7 @@ namespace Kill.UI.Components
onConfirm?.Invoke(selectedHour, selectedMinute);
Destroy(gameObject);
}
private void OnCancelClick()
public void OnCancelClick()
{
Destroy(gameObject);
}

View File

@ -268,7 +268,12 @@ namespace Kill.UI.Pages
int currentIndex = GetDormancyIndexFromValue(sleepSetting.SleepTime);
m.Init(currentIndex, OnDormancySelected);
m.gameObject.SetActive(true);
UIManager.Instance.RegisterBackAction(m.Cancel);
UIManager.Instance.RegisterBackAction(() =>
{
m.Cancel();
UIManager.Instance.RegisterBackAction(Back);
}
);
}
/// <summary>

View File

@ -245,7 +245,12 @@ namespace Kill.UI.Pages
int currentIndex = GetVideoLengthIndexFromValue(multimediaSetting.RecordDuration);
m.Init(currentIndex, OnVideoLengthSelected);
m.gameObject.SetActive(true);
UIManager.Instance.RegisterBackAction(m.Cancel);
UIManager.Instance.RegisterBackAction(() =>
{
m.Cancel();
UIManager.Instance.RegisterBackAction(Back);
}
);
}
/// <summary>
@ -269,7 +274,12 @@ namespace Kill.UI.Pages
int currentIndex = GetSoundEffectIndexFromValue(multimediaSetting.SoundType);
m.Init(currentIndex, OnSoundEffectSelected,OnSoundEffectClick);
m.gameObject.SetActive(true);
UIManager.Instance.RegisterBackAction(m.Cancel);
UIManager.Instance.RegisterBackAction(() =>
{
m.Cancel();
UIManager.Instance.RegisterBackAction(Back);
}
);
}
/// <summary>

View File

@ -67,7 +67,7 @@ namespace Kill.UI.Pages
private byte _endHour;
private byte _endMinute;
private byte _repeat;
private Action lastback;
/// <summary>
/// 初始化编辑页面
/// </summary>
@ -77,6 +77,7 @@ namespace Kill.UI.Pages
/// <param name="onDelete">删除回调</param>
public void Init(int taskIndex, ScheduleTask task, Action<ScheduleTask, int> onSave = null, Action<int> onDelete = null)
{
lastback = UIManager.Instance.GetBackAction();
_editTaskIndex = taskIndex;
_onSaveCallback = onSave;
_onDeleteCallback = onDelete;
@ -278,6 +279,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform;
_modeSelectPageInstance = Instantiate(modeSelectPagePrefab, parent);
_modeSelectPageInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
_modeSelectPageInstance.Cancel();
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
}
return _modeSelectPageInstance;
}
@ -314,6 +321,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform;
_startTimeSelectionInstance = Instantiate(timeSelectionPrefab, parent);
_startTimeSelectionInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
_startTimeSelectionInstance.OnCancelClick();
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
}
return _startTimeSelectionInstance;
}
@ -352,6 +365,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform;
_endTimeSelectionInstance = Instantiate(timeSelectionPrefab, parent);
_endTimeSelectionInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
_endTimeSelectionInstance.OnCancelClick();
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
}
return _endTimeSelectionInstance;
}
@ -390,6 +409,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform;
_repeatSelectionInstance = Instantiate(repeatSelectionPrefab, parent);
_repeatSelectionInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
Destroy(_repeatSelectionInstance.gameObject);
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
}
return _repeatSelectionInstance;
}
@ -477,6 +502,7 @@ namespace Kill.UI.Pages
{
Debug.Log("[ScheduleEditPage] 返回");
ClosePage();
UIManager.Instance.RegisterBackAction(lastback);
}
/// <summary>