当我将字符串传递给另一个视图时,我有一个空值。 我的代码是:
在视图AddBarView.m
中,我有字符串:
nameAdded = nameField.text; //nameAdded is defined as NSString in AddBarView.h
NSLog(@"namefrom addbarview: %@", nameAdded); OK it works here , NsLog return the textfild
现在在其他视图中添加AddLocationController.m
@synthesize nameAdded;
- (void)addViewControllerDidFinish:(AddBarView *)controller
{
AddBarView *controllerAdd;
NSLog(@"namefrom addbarview: %@", controller.nameAdded); //here
[self dismissModalViewControllerAnimated:YES];
}
NSLog
返回一个(null)值。我的堕落是什么?
提前tx!
答案 0 :(得分:2)
您需要按如下方式将内存分配给nameAdded
字符串,并使用nameField对其进行初始化。
nameAdded=[[NSString alloc] initWithFormat:@"%@",nameField.text];
<强>编辑强> 将以下行放在init方法中。
nameAdded=[NSString stringWithFormat:@"%@",nameField.text];
答案 1 :(得分:2)
在这篇文章中,我提供了一个教程,了解如何将NSString
从一个ViewController
课转到另一个iOS - Passing variable to view controller
答案 2 :(得分:2)
nameAdded = nameField.text;你只保留了价值。如果稍后编辑nameField.text,则nameAdded的值也将更改。 你应该制作一份副本以保持价值。 nameAdded = [nameField.text copy]; 在AddBarView的viewDidUnload函数中检查是否已释放nameAdded。 否则,两个nameAdded变量是同一个对象?请打印他们的地址。
答案 3 :(得分:1)
实际上,您正在分配和初始化包含textField的类。所以它总是会返回NULL值,因为textField也已分配和初始化。如果类'AddBarView'在访问它的类之前调用,则可以简单地将它传递给类。相反,在访问它的类之后调用“AddBarView”,您可能希望将textField值存储在全局字符串中!!