Reposting with more concise and focused question after original question went unanswered. Also adding more insight into the problem after another day of research:
Hm... try to call [yourViewController.view setNeedsDisplay] after you change hidden property. Or avoid hidden, use alpha or addSubview: and removeFromSuperview methods instead.