我很难将变量从一个类文件传递到另一个类文件。我尝试过Global Variable creator extern,但这也行不通。
具体来说,我正在尝试将我创建的名为NDSClassSiteViewController
的新类文件中的变量传递给主控制器NDSClassMasterViewController
。
我已将@property添加到.h文件中,如下所示:
@interface NDSClassSiteViewController : UITableViewController {
NSArray *sitesMenu;
}
@property (nonatomic, retain) NSString *siteid;
@end
然后将@synthesize放入.m文件中,如下所示:
#import "NDSClassSiteViewController.h"
#import "NDSClassMasterViewController.h"
@interface NDSClassSiteViewController () {
NSMutableArray *_objects;
}
@end
@implementation NDSClassSiteViewController
@synthesize siteid;
我在.m文件中设置变量,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"showMenu"]) {
NSInteger row = [[self tableView].indexPathForSelectedRow row];
//NSArray *appcell = [sitesMenu objectForKey:@"Table"];
NSLog(@"AppCell %@", sitesMenu);
NSDictionary *entry = [sitesMenu objectAtIndex:row];
self.siteid = [entry objectForKey:@"SITEID"];
NSLog(@" sample SiteView %@", siteid);
//NDSClassMasterViewController *detailController = segue.destinationViewController;
//detailController.detailItemTwo = siteid;
}
}
然后我尝试使用以下命令在Master View控制器中访问它:
- (void)viewDidLoad
{
[super viewDidLoad];
globalid = siteid;
}
但我收到错误:use of undeclared identifier siteid
我真的不知道为什么它不允许我使用变量?我错过了什么吗?
答案 0 :(得分:1)
您已在NDSClassSiteViewController
上声明了某个属性。要访问该属性,您需要在范围内使用NDSClassSiteViewController
的实例,并且还必须使用属性的语法(点语法或标准方法调用语法)来访问它。
要阅读该属性:
aSiteViewController.siteID
[aSiteViewController siteID]
设置它:
aSiteViewController.siteID = @"Site ID here";
[aSiteViewController setSiteID:@"Site ID Here"]
当您使用NDSClassSiteViewController
的方法时,self
指向您可能想要使用的实例。否则,您可能要么在方法中创建它,要么将其作为参数传入。此外,当您使用NDSClassSiteViewController
的实例方法时,您可以访问直接支持该属性的实例变量 - 通常这将是_siteID
但您手动合成,因此只有siteID
应该有效。 请注意,我使用了siteID
而不是您正在使用的siteid
。我这样做是为了提高可读性并遵循既定的Objective-C命名约定。