В таких случаях обычно в homeVC сохраняют вложенные VC в var. Тогда во втором случае делегат не понадобится, а вот из вложенных VC данные или команды получают через делегата. Скорее всего у тебя нет сильной ссылки на VC2 и его делегат поэтому становится nil.