0

我很难将变量从一个类文件传递到另一个类文件。我已经尝试过全局变量创建者 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;
    }
}

然后我尝试使用以下命令在主视图控制器中访问它:

- (void)viewDidLoad
{
    [super viewDidLoad];

    globalid = siteid;


}

但我收到一个错误:use of undeclared identifier siteid

我真的不知道为什么它不允许我使用变量?我错过了什么吗?

4

1 回答 1

1

您已在 上声明了一个属性NDSClassSiteViewController。要访问该属性,您需要一个NDSClassSiteViewController范围内的实例,并且您还必须使用属性的语法来访问它——点语法或标准方法调用语法。

要读取属性:

aSiteViewController.siteID
[aSiteViewController siteID]

设置它:

aSiteViewController.siteID = @"Site ID here";
[aSiteViewController setSiteID:@"Site ID Here"]

当您在NDSClassSiteViewControllerthen的方法中时,self指向您可能要使用的实例。否则,您可能会在方法中创建它或将其作为参数传入。此外,当您在一个实例方法中时,NDSClassSiteViewController您可以直接访问支持该属性的实例变量 - 通常这是_siteID您手动合成的,所以siteID应该可以工作。请注意,我做了siteID而不是siteid您正在使用的。我这样做是为了可读性并遵循既定的 Objective-C 命名约定。

于 2013-03-03T09:30:48.577 回答