🪟
画面は変わったのにタイトルが戻らない問題を直した話
🪟 「画面切り替わってるのにタイトルだけ前のまま」ってならない?
なんでこれやろうと思ったか
正直、カレンダー画面作ったときに違和感あった。
画面はちゃんと変わってる。
でもタイトルバーだけ前のまま。
「いや、今カレンダー見てるのにタイトル違うの変じゃない?」って思った。
しかもこれ、
Escで戻ったあともズレる時がある。
👉 UIとして普通に気持ち悪い
何が起きてたか
構造としてはこうなってた
・通常画面:RenderDisplay()
・カレンダー:RenderCalendar()
で、タイトル更新は
RenderDisplayの中だけでやってた
👉 つまりこうなる
・カレンダー表示 → タイトル変わらない
・戻る → 再描画のタイミングでズレる
❌ 最初に考えた案
・各画面で好きにタイトル更新する
👉 これやるとどうなるか
・どこで上書きされるか分からない
・後から画面増えたら破綻する
→ 却下
✅ 採用したやり方
結論これ
👉 「タイトル更新はモードで一元管理」
方針
・画面ごとにタイトル変えない
・今どのモードかだけ持つ
実装イメージ
string CurrentMode = "NORMAL";
通常表示
Title = "tsk [Main]";
カレンダー
Title = "CALENDAR";
✅ 実際にやったこと
① カレンダーに入るとき
CurrentMode = "CALENDAR";
② 戻るとき
CurrentMode = "NORMAL";
③ 描画時に統一処理
if (CurrentMode == "CALENDAR")
{
Title = "CALENDAR";
}
else
{
Title = "tsk [View]";
}
👉 これだけ
良かったポイント
・戻し忘れが消える
・画面増えても壊れない
・責務が1箇所になる
👉 「どこがタイトル決めてるか」が明確になった
気づいたこと(重要)
👉 UIの状態は「描画側に持たせると壊れる」
今回の問題って
・画面ごとに状態持ってた
のが原因
👉 正しくは
・状態は1箇所
・表示はそこを見るだけ
まとめ
👉 結論:UI状態は分散させない
今回これやって変わったのは
・画面切替の違和感がなくなった
・後から機能追加しても安心になった
地味だけどかなり効いた修正だった
ダウンロード
GitHub
tsk_v111.zip をダウンロードして展開 → tsk.exe で起動
作者:mitsukida
お問い合わせ:mmitsuki0806@gmail.com
Discussion