我正在从理论转向一些实践。我从Apple网站下载了几个示例代码。第一个应用程序是来自
的TableViewSuitehttps://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html
看起来很漂亮和有吸引力。我最喜欢的是以编程方式掌握.nib文件。我试着重复这个应用程序,但是亲爱的,选择什么样的项目?
或
首先,我尝试了基于窗口的应用程序,它承诺
此模板为任何应用程序提供了一个起点。它只提供了一个应用程序委托和一个窗口。
听起来不错。只是窗口和委托,但当我开始编写代码时,我遇到了这样的困境。在Apple的代码中,我必须首先实现用表视图公开nib文件
- (void)applicationDidFinishLaunching:(UIApplication *)application {
/*
Create and configure the navigation and view controllers.
*/
RootViewController *rootViewController = [[RootViewController alloc] initWithStyle:UITableViewStylePlain];
// Retrieve the array of known time zone names, then sort the array and pass it to the root view controller.
NSArray *timeZones = [NSTimeZone knownTimeZoneNames];
rootViewController.timeZoneNames = [timeZones sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController = aNavigationController;
[aNavigationController release];
[rootViewController release];
// Configure and display the window.
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
}
这种方法对我来说很清楚。我的意思是它对我来说很明显。在我的应用程序中,此方法以完全不同的方式实现。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
它返回BOOL而不是返回void并且没有得到(UIApplication *)应用程序参数,我无法用样式初始化RootViewController。
那么,我应该选择什么样的项目?请帮助我。提前完成。
答案 0 :(得分:0)
对于要使用的项目类型,我认为选择基于Window的应用程序是一个很好的起点。正如你所说,它是一个窗口和一个代表,这些都是必需品。
此方法:
实际上用于旧版本的iOS。你应该使用:
这个方法基本上做同样的事情,除了它需要两个参数而不是1.第一个是UIApplication(就像第一个方法一样)。第二个参数是一个字典,它告诉你应用程序启动的原因(从跳板打开,由于执行推送通知而打开等)。
对于返回值,您可能希望在刚开始时返回NO。如果您的应用程序要处理URL资源,那么您可能需要重新实现它,以便它在选项字典中查看应用程序是否正在启动,因为用户正在尝试打开您的应用程序声称的文件或资源支持(在这种情况下,您将返回YES)。
不应该使用上面发布的代码。您只需要添加一个返回值。不应该阻止你初始化你的UINavigationController或你的RootViewController(我假设它是UITableView的子类)。
答案 1 :(得分:0)
嘿nathan这两种方法都是一样的。
如果您缺少application
实例,则可以使用[UIApplication sharedApplication]
创建它,因为这是一个单例并且每次都会返回相同的实例。
如果您是iPhone新手,那么首先选择View Based,然后选择基于导航的应用程序,最后选择基于窗口的应用程序。
关于上述两种方法,在早期版本的iOS中使用了- (void)applicationDidFinishLaunching:(UIApplication *)application
方法来初始化应用程序并准备运行。在iOS 3.0及更高版本中,您应该使用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
代替。
这些是直接来自苹果文档的行,你可以检查here
这两种方法的区别在于,当您的应用程序由于本地/推送通知而启动时,将调用方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
并将字典作为启动选项传递。所以使用这个而不是其他。
关于上面下载的代码,它是一个基于导航的应用程序。