🪟

画面は変わったのにタイトルが戻らない問題を直した話

に公開

🪟 「画面切り替わってるのにタイトルだけ前のまま」ってならない?

なんでこれやろうと思ったか

正直、カレンダー画面作ったときに違和感あった。

画面はちゃんと変わってる。
でもタイトルバーだけ前のまま。

「いや、今カレンダー見てるのにタイトル違うの変じゃない?」って思った。

しかもこれ、
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

https://github.com/moritan777/tsk-releases/releases/latest

tsk_v111.zip をダウンロードして展開 → tsk.exe で起動


作者:mitsukida
お問い合わせ:mmitsuki0806@gmail.com

🔗 関連記事

Discussion