To answer this question, you need to know why you call super in the first place. This is not always obvious with UIKit classes, since you cannot easily understand what the methods inside do.
Ignoring that, however, the placement of supercalls depends entirely on what the implementation of the superclass does. There is no golden rule. Sometimes it must go from above, sometimes from below, and sometimes even call it between other lines.
Top
An example of when it should be placed at the top is that you must override the loadView method of the loadView to add some subzones to its view. In this case, the implementation of the superclass loads the actual view on which you should place the subviews, so placing it at the top is the right way (or it won't work at all).
From below
A fairly common case to put it at the bottom is if you override viewWillAppear: of UITableViewController . The UITableViewController internally calls [self.tableView deselectRowAtIndexPath:animated:] in this method to get a slight effect on row selection when you return to a table view from another view. If you need to do something with the selected row, before you automatically deselect, you must place the super call at the bottom (or below the row where you access the selected indexPath).
source share