[英]How to access a variable from another class?
如何从另一个类(ViewController)访问变量“ pew”?
// ImageTouched.h
#import <UIKit/UIKit.h>
@interface ImageTouched : UIImageView
@property (nonatomic, strong) NSString *pew;
@end
// ImageTouched.m
#import "ImageTouched.h"
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Image Touched");
self.pew = @"pewpewpewew";
}
// myViewController.m
#import "ImageTouched.h"
- (void)viewDidLoad
{
[super viewDidLoad];
ImageTouched *instance = [[ImageTouched alloc] init];
NSLog(@"Pew value is %@", instance.pew);
}
您可以在ImageTouched.h头文件中声明一个属性。 您还可以在头文件中定义一个吸气剂,本质上它的工作原理相同。 当您在头文件中定义属性或方法时,该属性或方法将被设置为“公共”,并可被其他类访问。
在您的头文件中使用类似以下的内容:
@property (nonatomic, strong) NSString *pew;
您必须在ImageTouched.m中的某个位置为pew分配一个值,例如:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Image Touched");
self.pew = @"pewpewpewew";
}
然后在视图控制器中创建一个实例:
ImageTouched *instance = [ImageTouched init] alloc];
那么您可以访问如下属性: instance.pew
例:
NSLog(@"Pew value is %@", instance.pew);
另一种选择是在头文件中使用getter方法。 在标题中声明:
- (NSString *)pew;
在实现(.m)文件中:
- (NSString *)pew
{
return self.pew;
}
初始化之前,您正在访问变量pew
。 viewDidLoad
方法是视图控制器获得焦点时首先调用的方法之一。 这是调用方法的顺序:
-(void)initWithCoder
-(void)awakefromNib //(if story board is used)
or
-(void)loadView----() //if manually generating the view contoller
-(void)viewDidLoad-----(called only once in the life cycle of viewController)
-(void)viewWillAppear
-(void)viewDidAppear
视图加载完成后,将调用touchesBegan
方法。 正如我在edwardmp的评论中所说。 您需要先初始化变量。 您可以在ImageTouched类的构造函数中对其进行初始化,也可以通过实现viewDidLoad
调用之前的方法之一来对其进行初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.