UI Element Overloading?

Hey,

I have been creating my Inventory system and I have come across a strange problem, whenever I take items from chests the element deactivates itself and when I try to activate it (via. button or in scene manager) it just stays frozen for couple of seconds and then work perfectly.
I have a couple of scripts working with this element - inventory works with items changing their parents - slots. There is also a script that uses for commands to check weight of the items and shows it on child of said element.

So I looked into this a bit more and I found out that this “overloading” happens when I move items to inventory via different way than drag and drop system that I have implemented. For example I use this code to move all items to inventory with a click of a button.

public void Take() {

      inventory1.SetActive(true);

        for (int i = 1; i <= 14; i++)
        {
            slot = GameObject.Find("Slot" + i);
            if (slot.transform.childCount > 0)
            {
                while (!transfer)
                {                   
                    playerslot = GameObject.Find("Slot" +inventorynumber + "." + y);
                    if (playerslot.transform.childCount != 0)
                    {
                        if (y == 21)
                        {
                            y = 1;
                            inventorynumber++;
                            if(inventorynumber > 4)
                            {
                                inventorynumber = 1;
                            }
                            switch (inventorynumber)
                            {
                                case 1:
                                    inventory1.SetActive(true);
                                    inventorynumber = 1;
                                    y = 1;
                                    break;
                                case 2:
                                    inventory2.SetActive(true);
                                    inventorynumber = 2;
                                    y = 1;
                                    break;
                                case 3:
                                    inventory3.SetActive(true);
                                    inventorynumber = 3;
                                    y = 1;
                                    break;
                                case 4:
                                    inventory4.SetActive(true);
                                    inventorynumber = 4;
                                    y = 1;
                                    break;
                            }
                        }
                        else
                        {
                       y++;
                        }                      
                    }
                    else
                    {
                        transfer = true;
                    }
                }
                transfer = false;
                itemininventory = slot.transform.GetChild(0).gameObject;
                print(itemininventory);
                predmet = Instantiate(Resources.Load(itemininventory.name), transform.position, 
                Quaternion.Euler(0f, 0f, 0f)) as GameObject;
                predmet.transform.SetParent(playerslot.gameObject.transform, false);
                predmet.name = itemininventory.name;
                Destroy(itemininventory);
                if (y == 21)
                {
                    y = 1;
                    inventorynumber++;
                    if (inventorynumber > 4)
                    {
                        inventorynumber = 1;
                    }
                    switch (inventorynumber)
                    {
                        case 1:

                            inventory1.SetActive(true);


                            inventorynumber = 1;
                            y = 1;
                            break;
                        case 2:


                            inventory2.SetActive(true);

                            inventorynumber = 2;
                            y = 1;
                            break;
                        case 3:


                            inventory3.SetActive(true);

                            inventorynumber = 3;
                            y = 1;
                            break;
                        case 4:
                            inventory4.SetActive(true);
                            inventorynumber = 4;
                            y = 1;
                            break;
                    }
                }
                else
                {
                    y++;
                }
            }         
       }

    }

I have found a solution to this, what I was doing is that I was destroying and then creating UI element somewhere else, this caused my UI to freeze. I fixed it to simply change parent of desired UI elemnt.