我有代表,控制器和其他一些东西的应用程序。问题是我使用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];
}
我做得好吗?
答案 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
通常用于设置视图。