如何通过IBAction传递对象?

时间:2014-09-06 20:49:49

标签: ios objective-c properties ibaction

嗨和tnxs阅读。 test是一个NSString,它在我的ViewController viewDidLoad中声明和调用为:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *test = [[NSString alloc]init];
    test = @"This is a Test";
}

但是,如果尝试在IBAction中使用test,则不会传递任何内容,而是获取NULL而不是测试字符串。

- (IBAction)changeLabel:(id)sender {
    NSString *message = [NSString stringWithFormat:@"Hello, %@", test];
    [self.simpleLabel setText:message];
    [self.simpleTextField resignFirstResponder];

显然我遗漏了一些基本的东西,但不幸的是我无法在其他帖子中找到这个。 Tnxs提前。

2 个答案:

答案 0 :(得分:2)

您可以在.h文件中添加NSString *test等成员变量,并且只要您完成该任务,test就可以通过您班级中的任何方法访问。

示例:

@interface MyClass : UIViewController {
   NSString *test;
}

@end

并访问:

-(void)viewDidLoad {
   test = @"test";
}

答案 1 :(得分:1)

夫妻俩。

  1. 您无需对alloc/initNSString,您只需说someString = @"myString";

  2. 您应该创建一个属性,您可以在其中保留字符串以供将来使用,例如

  3. @property (strong, nonatomic) 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];
    }