You should be able to do it all in one state...
How would depend on what you are trying to do, and how your buttons are set up.
If this was a calculator, each of the buttons would have names like 1, 2, 3 etc.
my array manager object would set values for all indexes would wait for input, get button pressed as the buttons number and set userInput to array(#).
if the 5 button was pressed, it would get index 5 from my array, and set the userInput variable to whatever value array(5) has.
if this isn't a calculator, the buttons would send its index number to the manager.
this can actually be done in very multiple ways. try however you think would be easiest to manage it later.