【问题标题】:sending data to previous view in iphone将数据发送到 iphone 中的上一个视图
【发布时间】:2010-08-05 18:34:12
【问题描述】:

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

【问题讨论】:

  • 当您说“上一个视图”时,您是指“当前隐藏在另一个视图后面的现有视图”还是“当前不作为实例化对象存在的视图类”?跨度>
  • 上一个视图是仍然显示的视图,当前视图是它顶部的透明视图。

标签: iphone iphone-sdk-3.0 uiview uiviewcontroller


【解决方案1】:

我相信最好的方法是使用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];

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

【讨论】:

    【解决方案2】:

    有几种方法可以实现数据共享,Singleton Objetcs 是最流行的方法之一:

    Objective C Singleton

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        • 2015-03-11
        • 1970-01-01
        相关资源
        最近更新 更多