从弹出框控制器调用模态视图的方法
Posted
技术标签:
【中文标题】从弹出框控制器调用模态视图的方法【英文标题】:Calling method on modalview from popover controller 【发布时间】:2011-03-29 13:20:14 【问题描述】:我有一个 iPad 应用程序,它包含一个 splitviewcontroller - 从 splitview 的详细视图中,我打开一个 modalviewcontroller(NearbyViewController),它有一个按钮,显示一个带有选择器的弹出框(RadiusViewController)。这工作得很好,但是当我在选择器中选择一个值时,我想在 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"
这称为前向声明。您可以通过谷歌搜索了解更多信息或阅读有关编程的介绍性书籍。这是一个非常基本的编程概念,学习它很重要。
【讨论】:
我已经尝试过了,但效果不太好。它可以看到类,但它不识别我在该类中声明的任何方法或实例变量。但是如果我包含头文件,它可以很好地识别方法和变量,所以使用@class 名称时会有所不同。 @Milk78 您所描述的正是@class
和#import
的工作原理。也许我应该更新我的答案以进一步解释。
非常感谢您的补充说明 :) 可怕的是我已经开发了 10 年,而我在应用商店中有 5 个应用程序却不知道有关前向声明的详细信息 - 也许是时候学习它了 :D 以上是关于从弹出框控制器调用模态视图的方法的主要内容,如果未能解决你的问题,请参考以下文章