2

我正在尝试使用 ramin.firoozye.com 上的“iPhone 上的半模态(透明)对话框”中的代码在我的应用程序中实现部分覆盖模态。覆盖功能有效,它将模态框滑入视图,但从模态框的控制器调用任何 IBAction 会导致“无法识别的选择器发送到实例”崩溃。

我用隔离的代码重新创建了基本功能,它触发了同样的错误。要了解我在说什么,您可以在此处下载测试项目

我确定我只是在这里遗漏了一些简单的东西。任何帮助将不胜感激。

4

1 回答 1

2

在 TestViewController displayModal: 中显示您的 ModalViewController 时,您释放了您的 modalController(第 20 行)。不要这样做 - 你需要 ViewController 才能保持活力。如果您释放它,则只有视图保持活动状态(因为它在添加为子视图时会保留)。

此外,在 ModalViewController hideModalEnded 中,您释放了您没有保留的 modalView,因此我也将其删除。

所以现在你只需要在视图被移除后释放 ModalViewController 的实例。你可以通过[自我释放]来做到这一点;在 hideModalEnded 中,但这似乎是一个不寻常的模式,我觉得这样做不太好。

一些建议:

  • 将 show 和 hide 方法放在同一个类中。
  • 在控制器周围放置一个 ivar。
  • 另一种可能性:完全删除 ModalViewController 并将所有内容放入 TestViewController - 但这在很大程度上取决于实际操作中会发生多少操作。
于 2010-06-03T21:17:34.613 回答