我发现很难掌握如何使用iPhoneCoreDataRecipes应用程序中的TabBarController加载和连接视图。
有没有人对如何学习Apple Apple示例App中提供的概念有任何指示? 我已阅读Apple开发者网站上的其他项目。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
recipeListController.managedObjectContext = self.managedObjectContext;
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
}
我对上述的理解
第2行:填充列表控制器?
第3行:将子视图添加到选项卡控制器视图?
如果我对第3行的理解是正确的,那么其他视图,单位转换,添加到tabcontroller会在哪里?
答案 0 :(得分:2)
标签栏控制器需要视图控制器列表。我没有看到这个特定的样本,所以它可能由第一行处理。但是,通常您会执行以下操作:
实例化所有视图控制器:
UIViewcontroller *viewControllerTab1 = ...
UIViewcontroller *viewControllerTab2 = ...
UIViewcontroller *viewControllerTab3 = ...
将它们添加到标签栏控制器:
tabBarController.viewControllers =
[NSArray arrayWithObjects:
viewControllerTab1,
viewControllerTab2,
viewControllerTab3,
nil
];
然后你将tabBarController的视图作为子视图添加到窗口,然后是窗口makeKeyAndVisible(第2行和第3行)。这些不是特定于选项卡栏,它们只是将选项卡栏视图添加到主应用程序视图,就像任何其他视图控制器一样。
您也可以在此处指定UITabBarItem详细信息,或者在视图控制器上指定。您应该在此处执行此操作,以便在没有显示标签栏项目时不会遇到任何问题。 I.E.
viewControllerTab1.tabBarItem = [UITabBarItem init...]
答案 1 :(得分:1)
实际上:
第2行:将对managedObjectContext的引用传递给recipeListController。 managedObjectContext是CoreData结构。它包括对持久性存储的引用(通常但不总是,磁盘上的文件[SQLite])和managedObjectModel(项目中的文件)。此上下文允许您针对已保留到数据库的对象模型进行查询。 (因为这个例子是食谱:“获取需要成分”Flour“的所有食谱)。但由于这不是(严格来说)直接数据库查询,返回的”东西“是对象,而不是recordSet中的行。您只能在CoreData应用程序中找到对managedObjectContexts的引用。
第3行:已在上面解释过。这是在应用程序窗口中添加子视图,然后将tabBarController.view配置到该子视图。假设tabBarController之前已使用适当的viewControllers填充。
希望有所帮助。
答案 2 :(得分:0)
该代码闻起来像窗口,并且标签控制器都在NIB中加载。到目前为止,所有东西都已经“连线”了,它正在做的就是设置窗口的子视图并使其成为关键。
这可能会有所帮助。在XCode中创建一个基于选项卡的新应用程序,并查看它的作用。它将同时具有NIB加载和代码定义的视图,因此您可以看到差异。
答案 3 :(得分:0)
我认为您正在寻找的是我遇到的在Interface Builder中加载视图的问题,而不是代码。
所以步骤是:
1:打开mainwindow.xib
2:将视图模式设置为列视图
3:打开标签栏控制器并向下导航到标签元素
4:设置身份的类
我一直试图连接主要标签本身,但你需要更加具体!
希望这有帮助!