TableViewSuite App的哪种types的项目

我正在从理论走向一些实践。 我从苹果网站下载了几个示例代码。 第一个应用程序是从TableViewSuite

https://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html

看起来不错,有吸引力。 我最喜欢的是以编程方式掌握.nib文件。 我试图重复这个应用程序,但哦亲爱的,什么样的项目可供select?

  1. 基于导航的应用程序
  2. 基于视图的应用程序

要么

  1. 基于窗口的应用程序?

首先,我尝试了基于窗口的应用程序

该模板为任何应用程序提供了一个起点。 它只提供一个应用程序委托和一个窗口。

听起来不错。 只是窗口和委托,但是当我开始编写代码时,我面临着这样的困境。 在苹果的代码中,我必须实现的暴露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。

那么,我应该select什么样的项目? 请帮助我的build议。 提前感谢。

嘿nathan这两个方法都是一样的。 如果您缺lessapplication实例,那么您可以使用[UIApplication sharedApplication]创build它,因为这是一个单例,并且每次都会返回相同的实例。 如果你是iPhone的新手,然后去查看为基础,然后去基于导航的应用程序,然后基于窗口的应用程序。
关于上面的两个方法
- (void)applicationDidFinishLaunching:(UIApplication *)application
方法用于早期版本的iOS来初始化应用程序并准备运行。 在iOS 3.0和更高版本中,您应该使用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions instead。
这些是直接从苹果的文档,你可以在这里检查

这两种方法的不同之处在于,当您的应用程序由于本地/推送通知而启动时,方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions被调用,并且字典作为启动选项。 所以使用这个而不是其他的。

关于上面下载的代码,这是一个基于导航的应用程序。

至于什么types的项目使用,我认为select一个基于窗口的应用程序是一个很好的起点。 正如你所说,这是一个窗口和一个代表,这些都是必需品。

这种方法:

  • (void)applicationDidFinishLaunching:(UIApplication *)应用程序

实际上是在较旧版本的iOS中使用的。 你应该使用:

  • (BOOL)应用程序:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

这个方法基本上做同样的事情,除了它需要两个参数,而不是1.第一个是UIApplication(就像第一个方法)。 第二个参数是一个字典,告诉你为什么应用程序已经启动了(从跳板打开,作为推送通知的结果而打开)。

至于返回值,刚开始时你可能想返回NO。 如果您的应用程序要处理URL资源,那么您可能需要重新实现它,以便在选项字典中查找该应用程序是否正在启动,因为用户正试图打开您的应用程序声称的文件或资源支持(在这种情况下,你会返回YES)。

不应该使用上面发布的代码。 你只需要添加一个返回值。 不应该有任何东西阻止你初始化你的UINavigationController或你的RootViewController(我认为它是UITableView的子类)。