Ios 如何通过iAction传递对象?
test是一个NSString,在my ViewController viewDidLoad中声明和调用为:Ios 如何通过iAction传递对象?,ios,objective-c,properties,ibaction,Ios,Objective C,Properties,Ibaction,test是一个NSString,在my ViewController viewDidLoad中声明和调用为: - (void)viewDidLoad { [super viewDidLoad]; NSString *test = [[NSString alloc]init]; test = @"This is a Test"; } 但是,如果尝试在iAction中使用test,则不会传递任何内容,并且会得到NULL而不是测试字符串 - (IBActi
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *test = [[NSString alloc]init];
test = @"This is a Test";
}
但是,如果尝试在iAction中使用test,则不会传递任何内容,并且会得到NULL而不是测试字符串
- (IBAction)changeLabel:(id)sender {
NSString *message = [NSString stringWithFormat:@"Hello, %@", test];
[self.simpleLabel setText:message];
[self.simpleTextField resignFirstResponder];
您可以在.h文件中添加一个成员变量,如NSString*test,完成后,类中的任何方法都可以访问该测试 例如:
@interface MyClass : UIViewController {
NSString *test;
}
@end
以及访问:
-(void)viewDidLoad {
test = @"test";
}
两件事
对于NSString,您不需要说alloc/init,只需说someString=@myString
您应该创建一个属性,以便保存字符串以备将来使用,例如
@属性强,非原子NSString*someString
然后在viewDidLoad中
self.someString=@Hello World
最后,在IBAction中,您可以说:
- (IBAction)changeLabel:(id)sender {
NSString *message = [NSString stringWithFormat:@"Hello, %@", self.someString];
[self.simpleLabel setText:message];
[self.simpleTextField resignFirstResponder];
}
测试也是ivar还是属性?如果是这样的话,就去掉行NSString*test=[[NSString alloc]init];从viewDidLoad。这就创建了一个名为test的局部变量,它隐藏了名为test.Tnxs的ivar,这回答了我的问题!然而,由于这个简单的例子起源于一个更复杂的例子,在这个例子中,我没有使用字符串,而是使用一个带有字符串名称的自定义类作为其属性之一,如果我没有在viewDidLoad中alloc/init它,我就无法使用它;通过这样做,它在iAction中不可见,尽管它已添加到头文件中。。。