【问题标题】:Three20 InvalidateModelThree20 无效模型
【发布时间】:2012-09-03 16:05:18
【问题描述】:

我会尽量解释清楚:我正在使用 Three20 库

我有一个 PostEdit 类,其中包含一个 xib 和一个类,该类在现有视图 (PostSearch) 上创建一个“弹出”调用 Edit Post(下图),这样用户在尝试时不必离开屏幕编辑他们创建的论坛帖子。

因此,当用户按下发送按钮并将数据发送回服务器时,我想使 PostSearch 类 (Model/DataSource) 失效。这是我不知道该怎么做的地方。 我什至在我的 PostEdit 课程中尝试过,但没有成功。

    PostSearch *post = [[PostSearch alloc] init];
    [post Invalidate];
    [post invalidateModel];
    [post invalidateView];
    [post release];

【问题讨论】:

  • 您能否详细解释一下 PostEdit 和 PostSearch 之间的关系,以及当用户点击完成时您想要做什么?
  • 两者之间的唯一关系是上图只是编辑论坛帖子的一种方式。当用户点击完成时,我唯一想不通的是如何使模型无效(Three20)。无效模型在 PostSearch 类中,我想从 PostEdit 类中调用它。

标签: c++ cocoa-touch three20


【解决方案1】:

我不确定我是否理解您想要做什么;无论如何,我会尝试假设 PostSearch 是位于 PostEdit 下方的控制器;编辑帖子并单击完成后,您想更新 PostSearch。

如果这是正确的,那么您需要做的是访问已经存在并且当前显示在 PostEdit 下的 PostSearch 对象。例如,您可以:

  1. 在创建 PostEdit 时传递对 PostSearch 的引用;然后在完成按钮处理程序中,您将使其模型无效;或者,

  2. 为您的 PostSearch 对象注册一个通知(通过 NSNotificationCenter),当点击完成时 PostEdit 将触发;或者,

  3. 使用“蛮力”方法并在您的 PostSearch viewWillAppear 中执行失效操作。

我从未使用过invalidateModel 方法。当我需要刷新数据时,我会做的是:

self.model = nil;
self.model;

你也可以试试这个。

【讨论】:

  • 我试过了,我什至尝试调用一个定时器来调用,[self invalidate],定时器被调用但是[self invalidate]没有做任何事情,它只有在方法时才会起作用从类内部调用。如果有办法做到这一点。
  • 我建议了三种不同的方式让您从类内部调用该方法...如果您选择一种方法并尝试一下,我可以进一步提供帮助。
  • 我已经尝试了所有这些,但我仍然没有收到任何东西。这让我很困惑。
  • 所以我一直在阅读,会从 POSTEDIT 工作中创建一个委托
  • 创建一个委托与我的 1 建议相同。如果没有看到您如何尝试实施我提出的任何解决方案并且对您不起作用,我无法提供进一步的帮助......
猜你喜欢
  • 2014-09-15
  • 2016-07-13
  • 2011-04-19
  • 1970-01-01
  • 2015-07-11
  • 1970-01-01
  • 2014-07-16
  • 2021-09-20
  • 1970-01-01
相关资源
最近更新 更多