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

时间:2011-03-31 14:38:54

标签: iphone objective-c uiview subview

我有代表,控制器和其他一些东西的应用程序。问题是我使用init初始化控制器中的所有内容。这个init创建了3个UIVIews(openGL,imagepickerview和MKMapView),我想在窗口中添加这些视图,因此它们位于另一个之上。但是,不知何故,它只绘制了3个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];
}

我做得好吗?

1 个答案:

答案 0 :(得分:2)

假设您的所有视图都是单个屏幕的一部分,则在使用viewController进行设置后,您无需向窗口添加任何内容。设置viewController,然后在该控制器的视图中添加下一个视图。

e.g。在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通常用于设置视图。