При общении с родительскими объектами у вас есть несколько шаблонов дизайна на выбор. Делегирование и уведомление - хороший выбор.
Большая идея здесь - это связь со слабой связью. Уведомления используют Singleton для обработки связи, в то время как Делегирование использует слабые ссылки на родительские объекты. (Проверьте Какао с любовью: сохранить циклы )
Если вы идете с делегированием, вы можете создать неофициальный протокол для вашего ViewControllerA, которому должен соответствовать MainViewController.
Вы можете назвать его протоколом ViewControllerADelegate:
@protocol ViewControllerADelegate
@optional
- (void)bringSubViewControllerToFront:(UIViewController*)aController;
@end
Или ViewControllerA может опубликовать уведомление:
[[NSNotificationCenter defaultCenter] postNotificationName:@"MyFunkyViewSwitcherooNotification" object:self];
И MainViewController должен поддерживать, если он хочет знать:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(swapThoseViews:) name:@"MyFunkyViewSwitcherooNotification" object:nil];