添加具有新原点的较小子视图

时间:2010-04-26 22:37:00

标签: objective-c iphone uiviewcontroller

我无法理解这一点 - 我知道这一定很简单......我开始感到非常愚蠢。我有两个viewControllers。 MainViewController.h / m和LevelsViewController.h / m

我想在LevelsViewController类中添加一个subView,在IB中构建一个名为levelsView的视图。我从MainViewController.m文件中调用它。 levelsView只有200x200像素,我想将它从superView的帧原点偏移x = 140像素,y = 50像素。

我有这个工作 - 视图显示,但我无法弄清楚如何抵消它。它只显示在0,0 superView帧原点。 (superView显示在它下面,这就是我想要的)。

这是我在MainViewController.m中显示levelsView的方法中调用的代码。(我已经注释了一些我尝试过的东西 - 但是抛出了这个错误:错误:请求成员'框架'in'myLevelsView',属于非类型'LevelsViewController *'

- (void) displayLevelsPage {

    if (self.theLevelsView == nil) // Does not yet exist - therefore create
    {
        LevelsViewController * myLevelsView = [[LevelsViewController alloc] initWithNibName:@"levelsView" bundle:[NSBundle mainBundle]];
        NSLog(@"NEW theLevelsView instance created!");
        CGRect frame2 = CGRectMake(140, 50, 200, 200);
        //myLevelsView.frame = frame2;
        self.theLevelsView = myLevelsView;
        [myLevelsView release];
    }

    [self.view addSubview: theLevelsView.view];
    NSLog(@"Levels View has been activated");
}

任何见解都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

myLevelsView没有框架,但它有一个视图,并且有一个框架,因此您的注释掉的行可能是:

myLevelsView.view.frame = frame2;

但是viewcontroller不应该将viewcontroller作为子视图。 viewcontroller用于控制整个视图。一次只能有一个视图控制器控制屏幕。对于MainViewController中的任何子视图,使用UIView(或任何UIView的子类)。