我一直在研究自定义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提供的答案显示了如何获取该信息。
谢谢大家
答案 0 :(得分:1)
调用applicationDidFinishLaunching时,将设置接口构建器连接。因此,任何需要初始化的类都将在applicationDidFinishLaunching之前调用。如果您想知道调用哪些方法,一旦在XCode 4中的Debug Navigator内部遇到断点,就会跟踪堆栈跟踪。
<强>更新强>
在MainWindow.xib内部展开导航控制器,你会发现MyTableViewController。
答案 1 :(得分:0)
假设您正在使用Xcode 4,您可以点击IB底座区域底部的小扩展按钮:
这将让你看到导航控制器中包含的对象,如下所示:
现在您可以看到,在加载主笔尖时,会创建一个MyTableViewController作为导航控制器的根控制器。另一种方法是使用Editor-&gt; Reveal in Document Structure命令。