我尝试将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)。为什么呢?
感谢您的帮助,抱歉我的英语不好。
答案 0 :(得分:3)
你在哪里称那个NSLog
声明?如果它位于loadView
或viewDidLoad
中,则无效,因为在您的示例中调用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代码下移动了背景代码,现在它可以工作:)