I fixed it by referencing the objects directly rather than hiding/showing the subform that contained them:
if (this.rawValue == 1) {
Title.presence = "visible";
Grade.presence = "visible";
Year.presence = "visible";
}
else {
Title.presence = "hidden";
Grade.presence = "hidden";
Year.presence = "hidden";
}
...But if anyone can explain why hiding/showing the subform didn't work I'd like to know.
Thanks.