我有点不确定我们应该/必须在UIViewController
个对象之间建立父子关系的时间和原因。考虑像Twitter这样的应用程序,带有4个部分的标签栏。假设每个部分根UIViewController
(在4个中)是父容器的子节点,该节中的每个UIViewController
都是其节视图控制器的子节点。这很有道理。
但是在Twitter中,例如,每个部分可能都有自己的UINavigationController
,因此也有自己的独立导航堆栈。因此,可能存在这样的场景:用户在两个单独的部分中同时查看相同的推文。在这些情况下,是否有两个独立的孩子与两个不同的父母一起推文?
苹果:
UINavigationController对象支持通过a导航 分层数据集。导航界面显示一个子视图 控制器一次。
这是否意味着UINavigationController
在将视图控制器推入其堆栈时创建自己的父子关系,还是应该在推送新的视图控制器时手动完成?并且,在Twitter示例中,考虑到可能的重叠,在UINavigationController
堆栈中建立父子关系有多大必要?
如果有人能指出我关于iOS中亲子关系的文章/视频/等等,他们的意义,陷阱,丢失和不做,我真的很感激,因为我可以&# 39;找不到自己。
答案 0 :(得分:1)
"在那些情况下,是两个独立的孩子到两个孩子 不同的父母?"。
这取决于您的意思" 推文"。 "的资料Tweet 强>"可以是同一个对象,或具有相同可视内容的两个不同对象。两者都是可能的,并且没有"最佳实践",这完全取决于您的用例以及您想要实现的目标。
如果屏幕上显示一个对象,在UITableView内(如在Twitter应用程序中),则不会使UITableView或UIViewController成为对象" parent"。
对于Twitter应用程序,(我不是应用程序的用户),我猜它是同一个对象,在两个不同的地方展示。
这怎么可能? Core Data < - 这实际上是您解决问题的方法。
这是否意味着UINavigationController创建了自己的 将视图控制器推送到其上时的父子关系 堆栈
是 -
viewController参数中的对象成为导航堆栈上的顶视图控制器。推送视图控制器会使其视图嵌入导航界面中。如果动画参数为YES,则将视图设置为动画到位;否则,视图只显示在其最终位置。 除了在堆栈顶部显示与新视图控制器关联的视图外,此方法还相应地更新导航栏和工具栏。有关如何更新导航栏的信息,请参阅更新导航栏。
或者应该在新的视图控制器
时手动完成推?
没有
而且,在Twitter的例子中,有一个必要的 给定的UINavigationController堆栈中的父子关系 可能重叠?
阅读MVC structure,并停止将UIViewControllers-Navigationcontrollers与要在UI中显示的对象和内容混合。我认为您的问题是您没有掌握how object oriented language works,或至少如何在iOS中实现它。
编辑: 更新对象,还应该在每个UIViewController中更新它在应用程序中的显示位置(正如我从你想要实现的内容中理解的那样)。这是CoreData和NSFetchedResultsController进入图片的地方。
此外,获取结果控制器:可选择监控更改 到关联的托管对象上下文中的对象,并报告 将结果集更改为其委托(请参阅Controller的 代表)。
如果你需要在没有NSFetchedResultsController的帮助下处理tutorials,还有很多this manually,也可以这样做。只需搜索,Google就会提供。