Textfield应编辑全局变量然后显示它。但是不会显示任何内容或垃圾

时间:2013-03-18 08:51:10

标签: xcode utf-8 nsstring char textfield

我正在编写一个应该通过UDP控制Arduino的简单应用程序。我提出了两种观点: - 一个用于控制(ViewController.h / cpp) - 一个用于设置Arduino的主机名等。 (Settings.h / CPP)

在设置视图中是文本字段和开关。如果设置了开关,则应覆盖主机名。

主机名在ViewController.h中声明如下:

extern const char *host_name;

在ViewController.m中:

const char *host_name = "WIZnetccef3";

要在设置视图的文本字段中显示它,我正在使用viewDidLoad函数:

textfield.text = [[NSString alloc]initWithUTF8String:host_name];

对视图的更改工作正常。将显示主机名“WIZnetccef3”。

如果我改变了滑块的位置,如果开启了开关,将执行以下代码:

const char *hname = [textfield.text UTF8String];

host_name = hname;

但是当我切换视图并返回设置时,不会显示新的主机名。文本字段为空或有奇怪的字符。

这是我的问题,我不知道问题是什么。我建立了一些错误,以找出我犯了错误的地方,但这没有用。

1 个答案:

答案 0 :(得分:1)

你重新分配CONST值...我的C不是顶级但我认为这是问题所在。 您也不会复制文本字段的值,因此它可能无法保持有效

尝试

extern char *host_name;

char *host_name = nil;

if(!host_name) {
    host_name = malloc(sizeof(char) * 12);
    strcpy(host_name, :@"Wzeeee...";
}
textfield.text = [[NSString alloc]initWithUTF8String:host_name];

free(host_name);
host_name = malloc(sizeof(char) * strlen(textField.text.UTF8String)+1);
strcpy(host_name, textField.text.UTF8String);