views:

260

answers:

2

hi,

i made a second uiview in mei .xib file. the first view is landscape and i get it by following code

ItemController *newItem;
newItem = [[ItemController alloc] init];
newItem.view.....

how can i "activate" the second view, so i can use it with

newItem.view2...

is that possible? the second view is portait mode, so it should be hidden and when turning the ipad the first view should be hidden and the second gets visible.

thanks

+1  A: 

If I understand your question correctly, you can use the method willRotateToInterfaceOrientation:duration: in UIViewController.

You can declare two UIView variables and set connections to them using IB:

IBOutlet UIView *view1;
IBOutlet UIView *view2;

Then, in willRotateToInterfaceOrientation:duration: you can swap the views. Assuming that your ItemController is a subclass of UIViewController, you could have something like this:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        [self setView:view1];
    }
    else {
        [self setView:view2];
    }
}

When the user rotates the iPad this method will get called automatically.

NOTE: make sure you set shouldAutorotateToInterfaceOrientation: to return YES, and you may have to check the orientation to set the view property to the correct view initially.

EDIT: My answer is assuming that you have two views with distinct layouts/elements and not two views that are essentially the same thing sized for different orientations. If the latter is the case, there is probably a better way to do it using only one view.

yabada
+1  A: 

The approach you are taking will lead you to a trouble situation when you have some IBActions to associate with click of buttons or change the label text (which is on xib) etc. The best approach is to change the frame height width and positions when the orientation changes. Although this is difficult in beginning but it will save you from lots of troubles.

For assistance check http://stackoverflow.com/questions/2489845/rotate-uiviewcontroller-to-counteract-changes-in-uiinterfaceorientation/2490719#2490719

Hope this helps.

Thanks,

Madhup

Madhup