Первое, что вам следует знать, это то, что viewDidAppear - это метод UIViewController, а не UIView, он действительно не имеет ничего общего с представлениями.
Во-вторых, одновременно может быть только один «активный» UIViewController.
Когда вы добавляете представление «a» в окно, оно становится активным UIViewController, и только «a» получит сообщение viewDidAppear, в то время как «e» фактически не получит никаких методов, связанных с UIViewContoller (viewDidAppear, viewWillAppear и т. Д.). )
Как упомянуто @Noah, когда вы используете pushViewController, вы получите эти сообщения, потому что метод заставляет контроллер push-view стать "активным" UIViewController.
Мое предложение для вас заключается в том, что если вы создаете контроллеры для представлений, которые являются подпредставлениями, не подкласс UIViewController, а скорее NSObject, это снизит уровень вашей путаницы, так как вы не ожидаете, что ваши методы UIViewController будут вызываться, а они не будут в любом случае.