两个UIViews在一个.xib文件中?

时间:2010-04-23 18:50:51

标签: objective-c uiview ipad interface-builder xib

我在mei .xib文件中进行了第二次uiview。第一个视图是横向视图,我通过以下代码获取它

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

我怎样才能“激活”第二个视图,所以我可以将它与

一起使用
newItem.view2...

可能吗?第二个视图是portait模式,因此它应该被隐藏,当转动ipad时,第一个视图应该被隐藏,第二个视图可见。

感谢

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您可以在UIViewController中使用方法willRotateToInterfaceOrientation:duration:

您可以使用IB声明两个UIView变量并设置它们的连接:

IBOutlet UIView *view1;
IBOutlet UIView *view2;

然后,在willRotateToInterfaceOrientation:duration:中,您可以交换视图。假设你的ItemController是UIViewController的子类,你可以这样:

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

当用户旋转iPad时,将自动调用此方法。

注意:请务必将shouldAutorotateToInterfaceOrientation:设置为返回YES,并且您可能必须先检查方向,以便将视图属性设置为正确的视图。

编辑:我的回答是假设您有两个具有不同布局/元素的视图,而不是两个视图,这些视图基本上是针对不同方向的大小相同的视图。如果是后者,可能只有一种观点可以采用更好的方法。

答案 1 :(得分:1)

当您有一些IBActions与点击按钮相关联或更改标签文本(在xib上)时,您采取的方法会导致您遇到麻烦。 最佳方法是在方向改变时更改框架高度宽度和位置。虽然这在开始时很难,但它可以避免许多麻烦。

如需协助,请检查Rotate UIViewController to counteract changes in UIInterfaceOrientation

希望这有帮助。

谢谢,

Madhup