Hi,
I get this very often, it's a typical problem.
I have three different ways to go about this:
1: I use global events,
each prefab has a reference ( could be the name, could be an fsm Int variable that you set when you instanciate them or a string that defines it.
each, UI item, also has this reference,
now prefab can fire a global event to all passing its reference in the event data, and each ui item receives it and check against this reference to see if it should act or not. It's very usefull when you want to have some kind of radio button for example, the current active UI item will receive the new order and detects that it's not the same reference and so it will turn itself off.
2: use a look up method, like findGameObject action, make use of tags to narrow down the search as finding objects by name is costly in big hierarchy, only do this once, and not in the game loop, cache the result of the finding as well.
3: the prefab also create the UI item it is reponsible for or linked to, that's also powerful, but it depends on your setup and the purpose of your feature. this way, you only need to know the parent of the UI items, or even send a global event passing the instance you just created so that any UI object can catch it and parent that instance to itself and then you don't event care where it is in the UI hierarchy,
Bye,
Jean