我一直在研究自定义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中加载类型为MyTableViewControllerTouchCells。我看着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中的AppDelegate.m中的断点之前命中。我想这意味着MyTableViewController首先被加载,但是我一生都无法弄清楚该调用在代码中的位置。

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

谢谢

回答

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

感谢大家

最佳答案

调用applicationDidFinishLaunching时,将已设置接口构建器连接。因此,任何需要初始化的类都将在applicationDidFinishLaunching之前被调用。如果您想知道正在调用什么方法,则在XCode 4中的Debug Navigator中击中断点后,将遵循堆栈跟踪。

更新:

在MainWindow.xib内部,展开导航控制器,您将找到MyTableViewController。

关于objective-c - Apple Code示例:TouchCells,它如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6442643/

10-10 08:42