我想从tabBarController传递一个简单的核心数据对象信息到它的子视图,以便它们每个引用该对象的不同属性。作为一个新手,我不知道从哪里开始。它似乎不像将数据从一个tableView传递到另一个那么简单...将对象从tabbarController传递到它的子视图
谢谢你的帮助。
我想从tabBarController传递一个简单的核心数据对象信息到它的子视图,以便它们每个引用该对象的不同属性。作为一个新手,我不知道从哪里开始。它似乎不像将数据从一个tableView传递到另一个那么简单...将对象从tabbarController传递到它的子视图
谢谢你的帮助。
这样做非常简单。我试图在子视图initWithNibName中调用该对象,该对象不起作用。我最终创建了一个setObject函数,并在viewWillAppear中调用了我想要的属性。
希望这可以帮助别人。
A UITabBarController
应该处理其他视图控制器,不处理数据对象。标签栏控制器如何首先获取对象引用?你分享的目标是什么?
让每个下级VC都保持一个指向该对象的指针,然后它们可以按照相应的键路径到达它们设计要处理的实体。
Tim Roadley的书学习iOS数据核心数据在第5章和第6章中介绍了如何将对象从一个视图控制器(表视图)传递到详细视图。这听起来并不像那你问什么,但以防万一...
在回应评论:
我期待在实现代码如下,点击一个单元格,然后标签栏控制器滑入?这不是标签栏通常的视觉隐喻;它意味着改变整个程序的模式。请参阅音乐应用程序中的典型示例:歌曲,播放列表,艺术家。
但如果你真的需要那样做,试试这个(我假设你使用故事板):
prepareForSegue:
,告知目的地(标签栏控制器)它使用什么对象。-viewWillAppear
中,告知每个选项卡有关属性:self.frobisherViewController.frobisher = self.myWidget.frobisher
。您可以改为告诉每个组件标签顶级对象:self.frobisherViewController.widget = self.myWidget
。但我更喜欢第一种方法,因为联系较少。 frobisherViewController
现在需要了解小部件和frobishers。
如果您在标签栏控制器的视图控制器(大部分)之间共享同一个对象,也许最好的体系结构就是拥有一个中央数据对象。
一个典型的模式是单例,某种提供对象的数据管理器,但也许这是过度杀伤。另一个是保持对所有视图控制器的引用,并在发生某些变化时逐一更新它们 - 也不是很优雅。
你真正想要的就像是一个全局变量。你可以(ab)使用你的应用程序委托(只要给它一个指向该对象的属性),或者如果你更喜欢即使你的标签栏控制器(创建一个子类,给它一个属性)。在后一种情况下,每个视图控制器可以再拿到对象是这样的:
NSManagedObject *object = [(MyCustomTabBarController*)self.tabBarController object];
例如,您可以检查更改并刷新你的意见viewWillAppear
。
我使用tabBarController作为从tableView控制器中拾取的对象的详细视图。不知道这是否合理,作为一个总体新手,我意识到我可能会通过这样做打破一些基本规则。因此,它继承了我想要在每个选项卡子控制器中显示的核心数据对象的属性。 – Mountainbrussell