Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何通过iAction传递对象?_Ios_Objective C_Properties_Ibaction - Fatal编程技术网

Ios 如何通过iAction传递对象?

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

test是一个NSString,在my ViewController viewDidLoad中声明和调用为:

- (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中不可见,尽管它已添加到头文件中。。。