将数据发送到iphone中的上一个视图

时间:2010-08-05 18:34:13

标签: iphone iphone-sdk-3.0 uiview uiviewcontroller

在iphone中将数据发送到上一个视图的可能方法有哪些。不使用Appdelegate。因为我的视图类有可能再次实例化。

3 个答案:

答案 0 :(得分:3)

我认为最好的方法是使用NSNotificationCenter类。 基本上,您所做的是将一个对象(作为观察者)注册到通知中心。

例如,如果您有对象ABA注册为观察员。现在让我们说A是您正在讨论的“上一个”对象,您可以B向通知中心发送通知(数据或消息),然后通知对象A(和任何其他注册观察员)。

示例:

在文件ClassA.m注册中,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSomething:) name:@"SomethingHappened" object:nil];

didSomething是接收对象B发送的通知的方法。这看起来像

- (void) didSomething: (NSNotification *) notify {
...
}

最后,您从ClassB.m中的任何方法发送以下消息,以通知/发送数据到对象A

[[NSNotificationCenter defaultCenter] postNotificationName:@"SomethingHappened" object:self userInfo:your_data];

似乎很复杂,但在我看来这是最好的方法(一旦你理解它就很简单:)。

答案 1 :(得分:0)

有几种方法可以实现数据共享,其中Singleton Objects是最受欢迎的对象之一:

Objective C Singleton

答案 2 :(得分:0)

如果要与之通信的视图是父视图(例如,前一个视图的视图控制器是您创建此视图的位置),那么您可能希望处理在前一个视图控制器中关闭视图。执行此操作时,您可以读取已更改的数据并使用新数据更新以前的视图控制器。

然后在上一个视图控制器的viewWillAppear:方法中,更新实际视图以反映视图控制器的当前状态。

编辑:我刚刚注意到你的newView是透明的。如果是这种情况,那么您当然希望通过视图控制器路由所有逻辑。您应该只有一个具有可见视图的视图控制器。