似乎所有 Cocoa Touch 模板都设置为加载笔尖。
如果我想开始一个将使用视图控制器的新项目,并以编程方式而不是从 nib/xib 加载其视图(层次结构),那么设置或调整模板的步骤是什么。
尽管我所要做的就是实现-loadView,但每次尝试执行此操作时都会遇到麻烦。
似乎所有 Cocoa Touch 模板都设置为加载笔尖。
如果我想开始一个将使用视图控制器的新项目,并以编程方式而不是从 nib/xib 加载其视图(层次结构),那么设置或调整模板的步骤是什么。
尽管我所要做的就是实现-loadView,但每次尝试执行此操作时都会遇到麻烦。
进行完全编程的用户界面生成相当简单。首先,您需要将 main.m 编辑为如下所示:
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
[pool release];
return 0;
}
其中 MyAppDelegate 是您的应用程序委托类的名称。这意味着 MyAppDelegate 的实例将在启动时创建,通常由应用程序的主 Nib 文件处理。
在 MyAppDelegate 中,实现类似于以下的 applicationDidFinishLaunching: 方法:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if (!window)
{
[self release];
return;
}
window.backgroundColor = [UIColor whiteColor];
rootController = [[MyRootViewController alloc] init];
[window addSubview:rootController.view];
[window makeKeyAndVisible];
[window layoutSubviews];
}
其中 MyRootViewController 是窗口中主视图的视图控制器。这应该初始化主窗口,并将 MyRootViewController 管理的视图添加到其中。rootController 作为实例变量保存在委托中,以供以后参考。
这应该让您通过 MyRootViewController 以编程方式生成用户界面。
UIViews 本身没有层次结构,UINavigationControllers 有。所以初始化其中一个,然后将 UIViewController 弹出到它的堆栈上。这应该以最基本的方式完成,根本没有 XIB 文件。您应该能够以此为基础。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *viewController = [[UIViewController alloc] init];
// set the properties of viewController here, to make it look like you want
[navController pushViewController:viewController animated:NO];
[window addSubview:navController.view];
// Don't forget memory management
[navController release];
[viewController release];
[window makeKeyAndVisible];
}