我有新设置的应用程序,只有一个窗口和一个根视图(来自iOS单视图应用程序模板,由XCode提供)。
现在我尝试添加一个按钮。
相应的代码如下所示:
- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIButton* button0 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button0.frame = CGRectMake(140, 230, 40, 20);
[button0 setTitle:@"Exit" forState:UIControlStateNormal];
[button0 addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside];
[self.viewController.view addSubview:button0];
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
else
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
当我启动应用程序时,我只能看到空视图。
但是,当注释掉该行时,将该视图作为root添加到窗口,而是直接将按钮添加到窗口,然后我就可以看到该按钮了。
那么为什么这不符合这个观点呢?
答案 0 :(得分:1)
问题在于,即使在分配 viewController 之前,您也将 button0 添加为 self.viewController.view 的子视图。
当您调用 addSubview:方法时, self.viewController 为 nil 。因此,该按钮未添加到 viewController 。您应该在分配 viewController 之后添加按钮。
self.viewController = [[ViewController alloc]...
[self.viewController.view addSubview:button0];
答案 1 :(得分:0)
首先,创建根视图控制器,稍后向其添加子视图。你反过来做了。