2

当我将字符串传递给另一个视图时,我有一个空值。我的代码是:

在视图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)值。我的错在哪里?

提前发送!

4

4 回答 4

2

nameAdded = nameField.text; 你只保留了价值。如果稍后编辑 nameField.text,nameAdded 的值也会改变。您应该制作一份副本以保留价值。nameAdded = [nameField.text 副本]; 在 AddBarView 的 viewDidUnload 函数中检查您是否已释放 nameAdded。否则,两个nameAdded变量是同一个对象吗?请打印他们的地址。

于 2012-07-13T13:49:56.940 回答
2

您需要nameAdded按如下方式为字符串分配内存并使用 nameField 对其进行初始化。

nameAdded=[[NSString alloc] initWithFormat:@"%@",nameField.text];

编辑 将以下行放入 init 方法中。

nameAdded=[NSString stringWithFormat:@"%@",nameField.text];
于 2012-07-13T12:22:07.733 回答
2

请参阅我的这篇文章,我在这里提供了一个教程,了解如何将一个类NSString从一个ViewController类传递到另一个iOS - 将变量传递给视图控制器

于 2012-07-13T12:40:45.103 回答
1

实际上,您正在分配和初始化包含 textField 的类。所以它总是会返回 NULL 值,因为 textField 也已分配和初始化。如果在访问它的类之前调用​​了类“AddBarView”,您可以简单地将它传递给该类。相反,在访问它的类之后调用“AddBarView”,您可能希望将 textField 值存储在全局字符串中!

于 2012-07-13T13:28:54.323 回答