Taking things out of an Inventory

I coded a basic inventory. When you look at an item and click 'pickup,' it destroys the object and adds the name of the object to an array of strings that will be displayed on the buttons in the inventory view.

I want to know how I should take the item back out of the inventory. I am tempted to use the Instantiate prefab method, but I don't know how to access the prefab (which is in the project folder) through script with only the name of it. Is this possible to do or do I need to store more data about the object before I destroy it? If so, what do I need to store?

I know how to instantiate a prefab that is specified in the inspector, but in this case I want to be able to pick up any object in my scene (that has my pickUp script, of course), place it in my backpack, and then take it out again. Am I correct in assuming that the best way of doing this is to have a prefab of each item that I would be picking up and then instantiate an instance of that item each time I took it out of my inventory? If so, how do I implement that?

To load a Prefab by name you can put it in the resources folder and get it that way: http://unity3d.com/support/documentation/ScriptReference/Resources.Load.html

Something like:

 GameObject item = Instantiate(Resources.Load(itemName));

I think it could be simpler than that though. You are destroying the object when it is picked up only to later have to recreate it. To do this you have to make a prefab of every object. I think it would be simpler to just 'hide' the object when it is in the inventory, that way you don't have to recreate it later:

item.renderer.enabled = false;