Liban Abdulle
Liban Abdulle

Reputation: 177

How to support multiple screen orientations in iOS 7 without pushing another view controller on the stack?

I have been trying to get multiple orientations to work with a single view controller. Currently it checks for the device orientation and view controller. Then switches based on whether it's landscape or portrait. The problem is that it works fine in portrait, but since it pushes another view on the stack whenever it's in landscape the back button links to the portrait view instead of the actual screen we want to get back to (which is one further step away).

if (UIDeviceOrientationIsLandscape(deviceOrientation) &&
        self.navigationController.visibleViewController == self)
    {
        self.landscapeViewController =
        [self.storyboard instantiateViewControllerWithIdentifier:@"view_landscape"];

        [self.navigationController pushViewController:self.landscapeViewController
                                             animated:NO];

    }
    else if (UIDeviceOrientationIsPortrait(deviceOrientation) &&
             self.navigationController.visibleViewController == self.landscapeViewController)
    {
        [self.navigationController popViewControllerAnimated:NO];
    }

I cant present the landscape view controller in modal fashion, since there is a navigation controller involved.

Another thing is that I'm instantiating the same view controller for each orientation (using the same class but linking to different identifiers in the storyboard).

Upvotes: 0

Views: 824

Answers (2)

utkal patel
utkal patel

Reputation: 1421

It is possible you can handle programatically or simply use auto-layout depends on your requirement .just prefer this LINK

Upvotes: 0

Lord Zsolt
Lord Zsolt

Reputation: 6557

The thing you're trying to do is REALLY bad and goes against Apples way of doing things.

There's something called Autolayout, with which you can design a single view to work both in landscape and portrait mode.

Upvotes: 2

Related Questions