2011-03-31 74 views
0

我有一個委託,控制器和其他一些應用。問題是我用init初始化控制器中的所有內容。這個init創建了3個UIVIews(openGL,imagepickerview和一個MKMapView),我希望這些視圖可以添加到窗口中,所以它們在另一個之上。但是,它不知何故只會繪製3個imagePickerView中的一個。這裏是代表:Objective-c在我的控制器中添加子視圖

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window.rootViewController = self.viewController; 
    viewController = [[ARInvadersViewController alloc] initWithWindow:self.window]; 
    return YES; 
} 

這裏控制器:

-(id)initWithWindow:(UIWindow *)_window{ 
    self.window = _window; 
    // ... 
    // Some code here 
    // ... 
    [self.window addSubview:imagePickerController.view]; 
    [self.window addSubview:self.glView]; 
    [self.window addSubview:mapView]; 
    [self.window makeKeyAndVisible]; 
} 

我在做這行嗎?

回答

1

假設您的所有視圖都是單個屏幕的一部分,在使用viewController進行設置後,您無需在窗口中添加任何內容。設置你的viewController,然後在該控制器視圖上添加下一個視圖。

例如在AppDelegate

[self.window addSubview:self.viewController.view]; 
[self.window makeKeyAndVisible]; 

,然後在ViewController

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // blah blah blah 

    [self.view addSubview:imagePickerController.view]; 
    [self.view addSubview:self.glView]; 
    [self.view addSubview:mapView]; 
} 

注意init方法通常用來初始化值,並viewDidLoad通常用來設立意見。

+0

爲什麼它不讓我這樣做: '(self.window.rootViewController = self.viewController;)' in delegate? 似乎我無法訪問self.viewcontroller 它說EXC_bad_access – marcg11 2011-03-31 15:01:57

相關問題