0

I have pushed a view in navigation controller. For eg: view1 pushed view2, if I want to call any view1 method from view2. Is it possible. Is it a good practice.

TIA

4

2 回答 2

0

有几种方法可以构建您的应用程序以在内部通信中处理它。您想要的结构方式取决于您,但您必须具备面向对象编程的基本知识,最好还有模型视图控制器或其他设计模式。

以下是一些关于如何构建应用程序的示例:

建议一

  • 创建一个类 A 并让您的应用程序创建它的一个实例。

  • 让 A 分别创建 View1 和 View2 的一个实例并保留对它们的引用。

  • 让 View1 调用 A 中的方法,A 又可以调用 View2 中的方法。

  • 让 View2 调用 A 中的方法,A 又可以调用 View1 中的方法。

建议二

  • 在您的应用中创建 View1 的实例

  • 让 View1 创建 View2 的一个实例并保留对它的引用。

  • 让 View1 成为 View2 的代表

  • View2可以通过调用它的delegate来调用View1中的方法,View1可以通过调用引用来调用View2中的方法。

建议 3

  • 创建一些类 M1、M2 和 M3(描述您的应用程序的模型)

  • 创建视图 View1 和 View2。

  • 创建一个控制器类 C

  • 让 View1 和 View2 显示 M1、M2 和 M3 中的信息

  • 当用户与 View1 或 View2 交互时,让他们调用 C 中的方法,C 中的方法依次调用 M1、M2 和 M3 中的方法来改变它们的状态。

  • M1、M2 和 M3 的变化将通过 View1 和 View2 中显示的信息反映出来。

于 2012-08-08T11:48:15.313 回答
0

是的,有可能,实际上有几种方法可以做到这一点:

  1. 使用delegate模式,正如评论中建议的 NeverBe(尽管您仍然需要将引用传递给调用者)

  2. 只需在创建时传递View1引用View2,然后使用该引用来调用您需要的方法。

  3. 您可以viewControllerNavigationController堆栈上找到上一个,并调用它可用的任何公共方法

于 2012-08-08T11:42:02.370 回答