最优雅的方式将数据传递给rootViewController

时间:2011-05-02 06:54:14

标签: objective-c uinavigationcontroller

我要将第三个viewController中的数据传递给navigationController中的rootViewController。

我想这样做:

A = rootViewController,B = lastViewController 在B i中插入一个这样的方法:

-(void)load:(A father)f
{
   self.father = f;  // where father is a retain property
}

然后当我在A中分配B时,在推送之前我将调用load方法。

它会起作用吗?

此操作的其他方式? (也是全局变量和单例,我不想要这两个因为我在内存中有很多数据)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

有人说单身人士是邪恶的,但我认为他们填补了一个目的 - 但在你的情况下,我会和代表团一起去。这是IMO处理控制器和模型之间数据的最佳方式。

答案 1 :(得分:0)

  1. 更长,更合适的方式:协议和授权

    • 你的rootViewController B必须实现一个协议,然后在你的lastViewController中你必须声明该协议的委托,然后调用类似lastViewController.myDelegate = myParent;

    • 如果您想模块化组件,这很有用,但根据经验,某些类的功能非常具体,创建协议只会延长执行传输数据这一基本需求的过程。在这种情况下,我建议你使用#2。

  2. 简短的方法:你说的是什么

    • ...但我更喜欢在初始化时传递父类。即initWithParent:[myParent],但那只是我。也不要保留子类中的父级。只允许父类保留其子级,否则您将遇到内存管理问题。这种方法的缺点是,如果您的控制器变得复杂,以后将很难将它们的逻辑分开,以防您需要将它们分开,例如在另一个项目中重新使用一个组件。