5
votes

I have a ViewController that adds to other subviews which have subclassed uiviewControllers

so Its like this:

mainViewController
       |
  v---------v
subVC1   subVC2

And neither subVC1 or subVC2 have the viewDidAppear/viewWillAppear fired on them? The main view controller is creating in the app delegate and it view added there as well to the window.

Here is an xcode project to show my problem: http://www.qfpost.com/download.do?get=92f03538907e72665ea794d98ff8392b

2

2 Answers

5
votes

I had a look at your code. So the problem is that viewWillAppear/viewDidAppear get called when the view is added to the Window, not to one of it's subview. You might want to use viewDidLoad for that.

1
votes

Firstly, are you sure you actually need to be doing what you're doing with this hierarchy of UIViewControllers? Why can't your MainViewController deal with the views that your subVC1 and subVC2 are responsible for?

Second, your viewWillAppear/viewDidAppear will get called when YOU write the code to call them from your MainViewController. Without knowing anything else about your design it's not really possible to advise on when you should call them, but if the sub-controllers' views are to be always visible when the 'main' view is visible, then it probably makes sense to call them from the viewWillAppear/viewDidAppear methods of your mainViewController.