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); onConfirm?.Invoke(selectedHour, selectedMinute);
Destroy(gameObject); Destroy(gameObject);
} }
private void OnCancelClick() public void OnCancelClick()
{ {
Destroy(gameObject); Destroy(gameObject);
} }

View File

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

View File

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

View File

@ -67,7 +67,7 @@ namespace Kill.UI.Pages
private byte _endHour; private byte _endHour;
private byte _endMinute; private byte _endMinute;
private byte _repeat; private byte _repeat;
private Action lastback;
/// <summary> /// <summary>
/// 初始化编辑页面 /// 初始化编辑页面
/// </summary> /// </summary>
@ -77,6 +77,7 @@ namespace Kill.UI.Pages
/// <param name="onDelete">删除回调</param> /// <param name="onDelete">删除回调</param>
public void Init(int taskIndex, ScheduleTask task, Action<ScheduleTask, int> onSave = null, Action<int> onDelete = null) public void Init(int taskIndex, ScheduleTask task, Action<ScheduleTask, int> onSave = null, Action<int> onDelete = null)
{ {
lastback = UIManager.Instance.GetBackAction();
_editTaskIndex = taskIndex; _editTaskIndex = taskIndex;
_onSaveCallback = onSave; _onSaveCallback = onSave;
_onDeleteCallback = onDelete; _onDeleteCallback = onDelete;
@ -84,7 +85,7 @@ namespace Kill.UI.Pages
// 加载多语言 // 加载多语言
LoadLocalizedStrings(); LoadLocalizedStrings();
// 设置默认值或现有值 // 设置默认值或现有值
if (taskIndex < 0) if (taskIndex < 0)
@ -278,6 +279,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform; Transform parent = componentParent != null ? componentParent : transform;
_modeSelectPageInstance = Instantiate(modeSelectPagePrefab, parent); _modeSelectPageInstance = Instantiate(modeSelectPagePrefab, parent);
_modeSelectPageInstance.gameObject.SetActive(false); _modeSelectPageInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
_modeSelectPageInstance.Cancel();
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
} }
return _modeSelectPageInstance; return _modeSelectPageInstance;
} }
@ -314,6 +321,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform; Transform parent = componentParent != null ? componentParent : transform;
_startTimeSelectionInstance = Instantiate(timeSelectionPrefab, parent); _startTimeSelectionInstance = Instantiate(timeSelectionPrefab, parent);
_startTimeSelectionInstance.gameObject.SetActive(false); _startTimeSelectionInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
_startTimeSelectionInstance.OnCancelClick();
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
} }
return _startTimeSelectionInstance; return _startTimeSelectionInstance;
} }
@ -328,7 +341,7 @@ namespace Kill.UI.Pages
{ {
page.gameObject.SetActive(true); page.gameObject.SetActive(true);
page.Init(_startHour, _startMinute, OnStartTimeSelected); page.Init(_startHour, _startMinute, OnStartTimeSelected);
page.title.text=LanguageManager.Instance.GetLanguage("100142"); page.title.text = LanguageManager.Instance.GetLanguage("100142");
} }
} }
@ -352,6 +365,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform; Transform parent = componentParent != null ? componentParent : transform;
_endTimeSelectionInstance = Instantiate(timeSelectionPrefab, parent); _endTimeSelectionInstance = Instantiate(timeSelectionPrefab, parent);
_endTimeSelectionInstance.gameObject.SetActive(false); _endTimeSelectionInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
_endTimeSelectionInstance.OnCancelClick();
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
} }
return _endTimeSelectionInstance; return _endTimeSelectionInstance;
} }
@ -366,7 +385,7 @@ namespace Kill.UI.Pages
{ {
page.gameObject.SetActive(true); page.gameObject.SetActive(true);
page.Init(_endHour, _endMinute, OnEndTimeSelected); page.Init(_endHour, _endMinute, OnEndTimeSelected);
page.title.text=LanguageManager.Instance.GetLanguage("100143"); page.title.text = LanguageManager.Instance.GetLanguage("100143");
} }
} }
@ -390,6 +409,12 @@ namespace Kill.UI.Pages
Transform parent = componentParent != null ? componentParent : transform; Transform parent = componentParent != null ? componentParent : transform;
_repeatSelectionInstance = Instantiate(repeatSelectionPrefab, parent); _repeatSelectionInstance = Instantiate(repeatSelectionPrefab, parent);
_repeatSelectionInstance.gameObject.SetActive(false); _repeatSelectionInstance.gameObject.SetActive(false);
UIManager.Instance.RegisterBackAction(() =>
{
Destroy(_repeatSelectionInstance.gameObject);
UIManager.Instance.RegisterBackAction(OnBackButtonClick);
}
);
} }
return _repeatSelectionInstance; return _repeatSelectionInstance;
} }
@ -477,6 +502,7 @@ namespace Kill.UI.Pages
{ {
Debug.Log("[ScheduleEditPage] 返回"); Debug.Log("[ScheduleEditPage] 返回");
ClosePage(); ClosePage();
UIManager.Instance.RegisterBackAction(lastback);
} }
/// <summary> /// <summary>