Method not being called from another script

I honestly have no clue why this is happening, but the method from UIManager class SetSelected() isn’t isnt getting called when I call it from the Cast script. I have confirmed that the if statements in Update do pass as true. I know the SetSelected() isn’t getting called because the debugging print functions never printed.

UIManager.cs
using UnityEngine;
using System.Collections;

public class UIManager : MonoBehaviour {

	public Transform[] spellBoxes;
	public Sprite fireballSelected;
	public Sprite iceballSelected;

	public void SetSelected(int x)
	{
		switch(x)
		{
		case (0) :
			spellBoxes[x].GetComponent<SpriteRenderer>().sprite = fireballSelected;
			break;
		case (1) :
			spellBoxes[x].GetComponent<SpriteRenderer>().sprite = iceballSelected;
			break;
		default :
			break;
		}
	}
}

Cast.cs

using UnityEngine;
using System.Collections;

public class Cast : MonoBehaviour {
	public float fireRate = 0;
	public int damage = 10;
	public Transform Fireball;
	public Transform Iceball;
	static public Transform selection;
	private UnitySampleAssets._2D.PlatformerCharacter2D character;
	private UIManager selectedBox;

	float timeToFire = 0;

	void Update () 
	{

		if(Input.GetKeyDown(KeyCode.Alpha1))
		{
			selection = Fireball;
			selectedBox.SetSelected(0);

		}

		if(Input.GetKeyDown(KeyCode.Alpha2))
		{
			selection = Iceball;
			selectedBox.SetSelected(1);
		}
        }
}

It looks as if your selectedBox is null. There are multiple ways to connect objects. One easy way would be to add a public Transform which stores the Object holding your UIManager.cs Script. To call SetSelected you have to get the script component. It could look something like this:

using UnityEngine;
 using System.Collections;
 
 public class Cast : MonoBehaviour {
     public float fireRate = 0;
     public int damage = 10;
     public Transform Fireball;
     public Transform Iceball;
     static public Transform selection;
     private UnitySampleAssets._2D.PlatformerCharacter2D character;
     public Transform managerObject;  // the owner of your UIManager Script
     private UIManager selectedBox;
 
     float timeToFire = 0;

     void Start() {
           // you have to get the Script to be able to call its functions
          selectedBox = managerObject.GetComponent<UIManager>();
     }
     void Update () 
     {
 
         if(Input.GetKeyDown(KeyCode.Alpha1))
         {
             selection = Fireball;
             selectedBox.SetSelected(0);
         }
 
         if(Input.GetKeyDown(KeyCode.Alpha2))
         {
             selection = Iceball;
             selectedBox.SetSelected(1);
         }
         }
 }

In the Inspector you have to connect your UIManager Object to managerObject.