this will help The second one is the most elegant to me (and you could tweak it with KVO instead of notifications). And it is since it does not load B with more responsibilities that he needs (B cannot even know about A) whereas the third option makes B notify A. Plus it will be more independent from changes than the first one (because you are obliged to check the situation before A is loaded, and you use ViewWillApperar:, but this situation can change in the future)
Resizing UIPopoverController according to number of ChildViewControllers
this one helps. in the end I implemented this using a UITableViewController. The header is a UIView implemented as a table header. While the two buttons are put into a UIView as the table footer. ChildViewControllers are put into UITableViewCells. I then disabled scrolling on the UITableView. This method made it very easy to achieve the variable height of the center portion while retaining header and footer.
Resizing behavior of UIPopoverController differs between iOS 7.0 and iOS 7.1
this will help This is a bug in popover controller in iOS7 and above. Please open a bug report with Apple in https://bugreport.apple.com and post the bug number in your question. This happens due to resizing the popover controller in viewDidAppear. The key is to delay the resizing just a little bit, so that the popover controller can finish its layout. Using dispatch_async on the main queue, you register your block to run on a followup pass of the main runloop, which gives the popover controller enough time to "breed" and the bug is not reproduced.