You're thinking about this in the wrong way. One view controller shouldn't care about what happens in another view controller.
If a button being tapped results in changes to the contents of a menu, it sounds like you're changing the data. The button press should tell the model layer that the available options have changed, and the other view controller should load the available options into the menu from the model layer.
I've heard a lot of talk about NSNotification but I thought that was for displaying alerts?
No, it is for distributing information about events to the rest of your application in a way that doesn't couple those parts together. It's not about interacting with the user.