iPhone-Objective-C在我的控制器中添加子视图

我对委托,控制器和其他一些东西有所了解.问题是我使用init将控制器中的所有内容初始化.此初始化创建3个UIVIew(openGL,imagepickerview和MKMapView),我希望将这些视图添加到窗口中,因此它们位于另一个视图之上.但是,以某种方式,它仅绘制三个图像之一,即imagePickerView.这是代表:

 - (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];
}

我可以吗?

最佳答案
假设所有视图都在一个屏幕中,则在使用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通常用于设置视图.

转载注明原文:iPhone-Objective-C在我的控制器中添加子视图 - 代码日志