Mallin painike näyttää yleensä yhden tilan: oletusarvon. Todellisessa tuotteessa samaa painiketta pidetään, kohdistetaan näppäimistöllä, painetaan, poistetaan käytöstä, kun lomake on kesken, ja latautuu pyynnön lähetyksen aikana. Jokainen niistä on käyttöliittymän tila, ja jokainen tarvitsee suunnittelun.
Se auttaa erottamaan kaksi ryhmää. Vuorovaikutustilat tulevat käyttäjältä: hiiri, tarkennus, painettuna ja pois käytöstä. Tietotilat tulevat järjestelmästä: lataus, tyhjä, osittaiset tiedot, virhe ja onnistuminen. Esimerkiksi luettelonäyttö tarvitsee suunnittelun, kun se latautuu, kun siinä ei ole nimikkeitä, kun siinä on yksi nimike, kun siinä on satoja ja kun pyyntö epäonnistuu.
Painopistetilat ansaitsevat erityistä huomiota. Näppäimistöä tai kytkinlaitetta käyttävät ihmiset tietävät, missä he ovat, näkyvästä tarkennusilmaisimesta. Selaimen painopisteen ääriviivan poistaminen ilman korvaamista on yksi yleisimmistä esteettömyysongelmista.
Vaihto tilojen välillä on myös osa suunnittelua. Lyhyt, selkeä siirtyminen oletusarvosta painettuun vahvistaa kosketuksen. Lataustila, joka muuttuu sujuvasti menestykseksi, kertoo ihmisille, että heidän toimintansa toimi. Äkilliset hypyt tai liian hidas animaatio saavat käyttöliittymän tuntumaan epäluotettavalta.
Käytännöllinen tapa välttää puuttuvia tiloja on listata ne jokaiselle komponentille ennen suunnittelua tai mallintaa komponentti tilakoneeksi: joukko tiloja ja niiden välillä liikkuvia tapahtumia. Valmistamamme ExodeUI toimii tällä tavalla. Suunnittelet jokaisen tilan ja niiden väliset siirtymät yhdessä tiedostossa, ja koodisi lähettää tapahtumat, jotka vaihtavat tiloja todellisessa sovelluksessa.