2010-04-26 45 views
0

我無法理解這一點 - 我知道它一定很簡單..我開始覺得很愚蠢。我有兩個viewControllers。 MainViewController.h/m和LevelsViewController.h/m用新的起源添加一個更小的子視圖

我想添加一個來自LevelsViewController類的子視圖和一個名爲levelsView的IB視圖。我從MainViewController.m文件調用它。 levelsView只有200x200像素,我想通過x = 140像素和y = 50像素將它從超級視圖的幀源偏移。

我有這個工作 - 視圖顯示,但我無法弄清楚如何抵消它。它只出現在0,0 superView框架的原點上。 (superView顯示在它下面,這是我想要的)。

這是我在MainViewController.m中顯示levelsView的方法中調用的代碼(我已經評論了一些我嘗試過的東西 - 但會拋出此錯誤:錯誤:請求成員'frame'在 '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"); 
} 

任何瞭解,將不勝感激。

回答

2

myLevelsView沒有一個框架,但它確實有一個觀點,並且有一個框架,讓您註釋掉行可能是:

myLevelsView.view.frame =式2;

但一個viewcontroller不應該有一個viewcontroller作爲子視圖。視圖控制器旨在控制整個視圖。一次只有1個視圖控制器可以控制屏幕。對於MainViewController中的任何子視圖使用UIView(或UIView的任何子類)。

+0

謝謝 - 解決了這個問題。是的 - 我意識到ViewController問題,但認爲通過setUserInteractionEnabled禁用superView上的所有用戶交互:NO,我可以避開它。也許不是最好的策略。 – ReachWest 2010-04-27 01:16:36

相關問題