0

我有一个iPad应用程序,它由一个splitviewcontroller组成 - 从splitview的详细视图我打开一个modalviewcontroller(NearbyViewController),它有一个按钮,显示一个弹出窗口(RadiusViewController)与一个选择器。这工作得很好,但是当我在picker中选择一个值时,我想调用modalview控制器上的一个方法,但我无法弄清楚如何做到这一点?从弹出窗口控制器调用modalview的方法

我的“NearbyViewController”导入“RadiusViewController.h”,因为我访问“RadiusViewController”中的某些数据,但我也需要能够将数据从RadiusViewController发回到NearbyViewController,但是如果我导入了NearbyViewController。 h文件在RadiusView然后我得到编译错误,因为他们试图导入彼此。

回答

1

这是一个常见问题,它很容易解决。解决方法只是简单地在.m文件中导入。如果您需要在.h文件中知道该类型,则只需使用前向声明即可。

@class ClassName; 

就这么简单。

编辑:一个更详尽的解释:

一般在.h文件的方法和类的属性并不需要知道。你所要做的就是告诉编译器有一个名为ClassName的类。编译器在这一点上不需要知道关于该类的其他任何信息。在.m文件中,您需要知道该类的方法和属性,否则您将无法使用它。所以在.m文件中导入类。

只是要清楚:

// SomeClass.h 
@class ClassName; 

// SomeClass.m 
#import "ClassName.h" 

这就是所谓的向前声明。您可以通过Google了解更多信息或阅读关于编程的入门书籍。这是一个非常基本的编程概念,学习它很重要。

+0

我已经尝试过,它不太工作。它可以看到类是好的,但它不识别我在该类中声明的任何方法或实例变量。但是如果我包含头文件,它可以识别方法和变量,所以在使用@class名称时有些不同。 – Milk78 2011-03-31 06:20:59

+0

@ Milk78你所描述的是'@ class'和'#import'是如何工作的。也许我应该更新我的答案以进一步解释它。 – 2011-03-31 09:25:23

+0

感谢很多的补充说明:)可怕的是我已经开发了10年,我有5个应用程序不知道关于前向声明的细节 - 也许是时候了解它:D – Milk78 2011-03-31 10:50:09

相关问题