In an iPad App i'm using the UISplitViewController. I need to force to show the master popover when the app launch in portrait mode.
Now I'm using this code and it works well on iOS 5.0.
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
if ([[[AppDelegate sharedAppDelegate] splitViewController] respondsToSelector:[[[AppDelegate sharedAppDelegate] btnMenu] action]]) {
[[[AppDelegate sharedAppDelegate] splitViewController] performSelector:[[[AppDelegate sharedAppDelegate] btnMenu] action]];
}
}
But in iOS 5.1 (with the new type of master popover) the behaviour seems to be random. Sometimes the popover shows in fullscreen and sometimes works well.
Some suggestion for 5.1?
Extending on Rob's answer, this works well for me (in viewDidLoad of detail screen):
No need to fetch a separate reference, using self.navigationItem.leftBarButtonItem instead
No need to keep silly references around to the barButtonItem. Simply call the same target/action. See my answer https://stackoverflow.com/a/25695923/1021430
The target is the split view controller, and the action is toggleMasterVisible:
For iOS8 the easiest way is with the following:
I use this when the app is launched the first time for showing log-in in masterViewController. In all other cases I use
A slightly less hacky variation (swift):
No suggestion here for 5.1, but one for 8.0:
Now with iOS8, there are a bunch of new methods for
UISplitViewController
configuration.In your case, juste set the right value in
preferredDisplayMode
, for example in the masterViewControllerviewDidLoad
.Objective-C:
Swift:
But it's of course iOS8 only.
If you need it at app launch, override this method in your detail view controller:
However if you then need it to subsequently hide it looks as though the method isn't called, so you'll have to manually hide it.