Apple代码示例:TouchCells,它是如何工作的?

时间:2011-06-22 15:41:39

标签: objective-c ios cocoa-touch sample

我一直在研究自定义UITableViewCells,并且遇到了来自apple的TouchCells示例:TouchCells Example Project

我无法弄清楚应用程序是如何加载的。如果你看AppDelegate.m,你会看到:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// create window and set up table view controller
detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
detailViewController.loadView;

[window addSubview:navController.view];
[window makeKeyAndVisible];
}

似乎加载DetailViewController

但是,当应用加载时,UITableViewController类型MyTableViewController加载了标题TouchCells。我查看MainWindow.xib并且没有MyTableViewController(据我所知)。

当我在

中放置断点时
- (void)viewDidLoad
{
// load our data from a plist file inside our app bundle
NSString *path = [[NSBundle mainBundle] pathForResource:@"tableData"     ofType:@"plist"];
self.dataArray = [NSMutableArray arrayWithContentsOfFile:path];
} 
MyTableViewController.m

,在来自applicationDidFinishLaunching的{​​{1}}中的断点之前命中断点。我想这意味着AppDelegate.m首先被加载,但我不能为我的生活找出代码中的调用位置。

有人可以帮我弄清楚MyTableViewController示例的逻辑流程吗?

由于

答案

所选答案中包含正确的信息,但@Caleb提供的答案显示了如何获取该信息。

谢谢大家

2 个答案:

答案 0 :(得分:1)

调用applicationDidFinishLaunching时,将设置接口构建器连接。因此,任何需要初始化的类都将在applicationDidFinishLaunching之前调用。如果您想知道调用哪些方法,一旦在XCode 4中的Debug Navigator内部遇到断点,就会跟踪堆栈跟踪。

<强>更新

在MainWindow.xib内部展开导航控制器,你会发现MyTableViewController。

答案 1 :(得分:0)

假设您正在使用Xcode 4,您可以点击IB底座区域底部的小扩展按钮:

expansion button

这将让你看到导航控制器中包含的对象,如下所示:

document structure

现在您可以看到,在加载主笔尖时,会创建一个MyTableViewController作为导航控制器的根控制器。另一种方法是使用Editor-&gt; Reveal in Document Structure命令。