我正在尝试通过基本的iPhone编程工作,我对Interface Builder的工作方式有了很好的基本了解,所以我决定尝试以编程方式执行视图.我已经浏览了ViewController Apple指南,并在各处搜索,我似乎无法找到解决问题的方法.这让我相信这是一个非常简单的解决方案,但我只是在撞墙而已.基本上我所要做的就是创建一个视图,将主窗口作为子视图.我知道如果没有定义self.view,那么应该调用loadView方法,并且应该在那里设置所有内容.这是我的代码的当前状态:
代表:
- (void)applicationDidFinishLaunching:(UIApplication *)application { StartMenuViewController *aViewController = [[StartMenuViewController alloc] init]; self.myViewController = aViewController; [aViewController release]; UIView *controllersView = [myViewController view]; window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; [window setBackgroundColor:[UIColor redColor]]; [window addSubview:controllersView]; [window makeKeyAndVisible]; }
视图控制器:
- (id)init { if (self = [super init]) { self.title = @"Start Menu"; } return self; } // Implement loadView to create a view hierarchy programmatically, without using a nib. - (void)loadView { UIView *startView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; [startView setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth]; [startView setBackgroundColor:[UIColor greenColor]]; self.view = startView; [startView release]; }
我在这里先向您的帮助表示感谢!
你确定你是从UIViewController继承而不是重写 - (UIView*)视图的实现吗?
编辑:更多信息:
UIViewController具有" - (UIView*)视图"消息的特殊实现,因此在调用它时,如果未设置视图成员变量,则调用loadView方法.因此,如果在子类(或名为view的属性)中提供" - (id)view"的实现,它将中断" - loadView"的自动调用.