无法从相关的 View Controller 访问 appdelegate 实例变量

Posted

技术标签:

【中文标题】无法从相关的 View Controller 访问 appdelegate 实例变量【英文标题】:Cannot access appdelegate instance variable from related View Controller 【发布时间】:2011-09-05 11:17:37 【问题描述】:

我的应用名称是 PropertiesSearch,因此该项目包含以下文件:

PropertiesSearchAppDelegate.h
PropertiesSearchAppDelegate.m
PropertiesSearchViewController.h
PropertiesSearchViewController.m

我在 PropertiesSearchAppDelegate.h 中声明了一个实例变量 (ListingNav),如下所示:

#import <UIKit/UIKit.h>

@class PropertiesSearchViewController;

@interface PropertiesSearchAppDelegate : NSObject <UIApplicationDelegate> 
    UINavigationController *ListingNav;


@property (nonatomic, retain) UINavigationController *ListingNav;

@end

在 PropertiesSearchAppDelegate.m 中,我添加了

@synthesize ListingNav; 

现在我正在尝试从 PropertiesSearchViewController.m 访问 ListingNav,如下所示:

PropertiesSearchAppDelegate *appDelegate = (PropertiesSearchAppDelegate *)[[UIApplication sharedApplication] delegate];
// Then here I can easily do appDelegate.ListingNav etc...

但调试器正在显示:

使用未声明的标识符PropertiesSearchAppDelegate

我应该在 PropertiesSearchViewController.h 中导入 PropertiesSearchAppDelegate.h 吗?

提前感谢您的帮助

斯蒂芬

【问题讨论】:

【参考方案1】:

您必须在 PropertiesSearchViewController.h 中导入 PropertiesSearchAppDelegate.h

要让一个类知道另一个类,您应该导入该类 或添加 @class 指令。添加 @class 指令 只是让类知道存在另一个类。在您的情况下,您应该在尝试访问该类的成员时导入 PropertiesSearchAppDelegate

【讨论】:

以上是关于无法从相关的 View Controller 访问 appdelegate 实例变量的主要内容,如果未能解决你的问题,请参考以下文章

无法从Spring Controller访问Controller Annotation数据

为 iOS 应用创建登录页面:“View Controller”无法访问,因为它没有入口点,也没有运行时访问的标识符

从 AppDelegate 访问 View Controller 的属性

无法在 View Controller 和 Model 之间传递数据

使用nuget包下载Entity Framework6.0无法使用模型类与数据库上下文自动生成controller与view

mvc是啥,有啥用