无法将NSString从一个视图传递到另一个视图

时间:2010-01-10 23:21:14

标签: iphone objective-c xcode

我尝试将NSString从一个视图传递到另一个视图,但我不起作用。我在SecondViewController中将NSString设置为属性

@property (assign) NSString * wert1;

当我在FirstViewController上按下按钮加载SecondViewController时,我尝试传递NSString:

SecondViewController *Second = [[SpinViewController alloc] initWithNibName:nil bundle:nil];
Second.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"black.png"]];
[Second setWert1:texteingabe1]; //HERE <<<<
Second.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:Second animated:YES];
[Second release];

在SecondViewController中我做了这个:

NSLog(@"%@",wert1);

但是NSLog只是说:( null)。为什么呢?

感谢您的帮助,抱歉我的英语不好。

4 个答案:

答案 0 :(得分:3)

你在哪里称那个NSLog声明?如果它位于loadViewviewDidLoad中,则无效,因为在您的示例中调用setWert1:之前会调用这些方法。

另外,请确保在调用NSLog之前没有将其设置为nil,当然,确保texteingabe1在传递时不是nil

答案 1 :(得分:1)

如果设置原始字符串文字,它是否有效? I.e [Second setWert1:@“Foo”]?在没有看到更多代码的情况下,在第二个视图中,字符串值为NULL的最可能原因是您为'texteingabe1'传入了一个NULL字符串。

答案 2 :(得分:1)

您需要在第二个控制器中复制或保留该字符串。使用@property关键字“retain”而不是“assign”。

Assign只是将字符串分配给你的实例成员在Second ...然后当在First控制器中释放字符串时它也从Second消失。

答案 3 :(得分:0)

得到了解决方案。我刚刚在setWert1代码下移动了背景代码,现在它可以工作:)