I have one iPad running Lemur to control various parameters in my Max environment --- the actual parameters can change depending on the particular "song" loaded. Typically, they are volume control sliders. The text underneath each slider on the iPad is updated from Max as different songs are loaded so that you can see what each slider represents at any time.
I have tried TouchOSC in the past and I've also played with TB MIDI Stuff which I think has potential as well, but Lemur still beats them both --- it's expensive but worth it if you're doing anything really serious.
I have another iPad running Scorecerer (a sheet music manager, disclaimer, my company makes this) that sends MIDI commands to Max that cause Max to perform actions such as loading different patchers ("songs"). Using pitchbend messages as the underlying representation, page numbers are also sent to Max. Max can also send messages back to that iPad to change the current page. At some point I'd like Scorecerer to generate OSC as well because MIDI requires Network MIDI to be configured every time I set up the computer, which is a bit of a pain.