两种观点定位问题

时间:2010-08-06 10:11:58

标签: iphone

我是iphone开发的新手..

正在创建一个小应用程序,其中两个视图控制器如

  1. loginController
  2. updateController
  3. 对于应用方向,我为每个控制器创建了两个视图 对于 第一个控制器是'landscapeLoginView'& 'portraitLoginView' &安培;第二个是'landscapeUpdateView'& 'portraitUpdateView'

    我在MainControllerDelegate文件中定义'isLogin'变量,

    方向代码如下所示,

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    
    TestAppDelegate *testDelegate = (TestAppDelegate *)[[UIApplication sharedApplication] delegate];
    
    if(testDelegate.isLogin) {
        UpdateController *updateController = [[UpdateController alloc] initWithNibName:@"UpdateController" bundle:nil];
        [self.view addSubview:updateController.view];
        [updateController release];
        return YES;
    } else 
    {
        if(UIInterfaceOrientationIsPortrait(interfaceOrientation))
        {
            self.view = self.portrait;
        }
        else if (UIInterfaceOrientationIsLandscape(interfaceOrientation))
        {
            self.view = self.landscape;
        }
        return YES;
    } 
    

    }

    点击“登录”按钮后,这将加载尊重的方向。 一切都适用于'LoginController',如按钮事件&所有

    但是, 当我进入'UpdateConroller'并通过单击'Update'按钮更新TextView中的文本时,它更新为'PortraitView'而不是'LandscapeView'。

    在Interface Builder中,我将'PortraitView'设置为'view'。

    我如何为'LandscapeView'提供相同的功能?我做对了吗?

4 个答案:

答案 0 :(得分:1)

你真的应该使用UIView autoresizingMask的功能......所以你只有一个UIViewController用于纵向和横向模式

它会更快,更少使用头痛。

答案 1 :(得分:0)

这不是执行视图更改的正确位置。此方法将仅查询您的应用程序是否可以支持某些方向。使用willRotateToInterfaceOrientation:duration:来改变您的观点。另外,请务必在笔尖中为纵向和横向视图创建连接插座。

答案 2 :(得分:0)

我自己对iPhone开发相当新,但据我了解,shouldAutorotateToInterfaceOrientation不是处理轮换的正确位置。它用于定义应用程序可以处理的方向。

要处理方向问题,您应该在willRotateToInterfaceOrientation:duration

中实现轮换功能

答案 3 :(得分:0)

我通过仅使用一个视图并根据方向重新定位所有控件来解决这个问题。