Это называется нормально, но не связано с интерфейсом. В вашем файле appDelegate.h должен быть какой-то контроллер вида, вместо этого вызовите метод этого объекта.
Обновление для более подробной информации:
Один из способов сделать это - просто сохранить контроллер при его первоначальном создании (и не выпускать его позже.)
Просто поместите свой собственный объект контроллера в ваш .h файл
Controller* myController;
И когда вы создаете новый контроллер представления, к которому хотите перейти, просто установите myController для ссылки на этот объект, а позже, когда вы захотите обновить пользовательский интерфейс, просто вызовите
[myController methodHere];
Немного неуклюже, но это работает. Только не забудьте выпустить myController, когда закончите с этим представлением.
Другая идея, которую я бы предложил изучить, - это изменить метод, который вы передаете своему делегату. То есть вместо использования метода как
-(returnType)callDelegateToDoSomething;
введите это как
-(returnType)callDelegateToDoSomething:(id) sender;
Вы вызываете новый метод таким же образом, но ваш контроллер должен автоматически передать себя в качестве аргумента. Затем внутри метода просто используйте
[sender methodHere];
и, надеюсь, сработает. (Возможно, вам придется немного поиграть с этим. Я не эксперт по делегатам или аргументам отправителя, но это стоит попробовать.)