【发布时间】:2010-06-15 08:40:55
【问题描述】:
如果字符串来自 UITextview 而不是 UITextfield,我在尝试将字符串从一个视图控制器传递到另一个视图控制器时遇到一个奇怪的问题。 UITextview.text 和 UITextfield.text 都是 NSString 类型。
以下代码根据 fieldType 采用 Textfield.text 或 Textview.text 并将其放入名为 aString 的字符串中。
NSString *aString = [[NSString alloc] init];
if (fieldType == 3) {
aString = textView.text;
} else {
aString = textField.text;
}
当我在任一情况下检查 aString 时,我可以看到它已成功地将文本分配给 aString。
然后我使用此代码将字符串传递给另一个视图控制器。
[delegate updateSite:aString :editedFieldKey :fieldType];
[self.navigationController popViewControllerAnimated:YES];
如果 aString 来自 textfield.text,这工作正常,但是如果 aString 来自 textview.text,则除了弹出视图控制器之外什么也没有发生
这是接受 aString 并对其进行处理的代码,但它甚至不执行第一行代码 "NSLog(@"Returned object: %@, field type:%@", aString,editedFieldKey) ;"如果 aString 来自 textview.text 任何帮助将不胜感激。
-(void)updateSite:(NSString *)aString :(NSString *)editedFieldKey :(int)fieldType {
NSLog(@"Returned object: %@, field type:%@", aString,editedFieldKey);
switch (fieldType) {
case 0: //string
[aDiveSite setValue:aString forKey:editedFieldKey] ;
NSLog(@"String set %@",[aDiveSite valueForKey:editedFieldKey] );
break;
case 1: //int
[aDiveSite setValue:[NSNumber numberWithInt:aString.intValue] forKey:editedFieldKey];
NSLog(@"Integer set");
break;
case 2: //float
NSLog(@"Saving floating value");
[aDiveSite setValue:[NSNumber numberWithFloat:aString.floatValue] forKey:editedFieldKey];
NSLog(@"Float set");
break;
case 3: //Text view
[aDiveSite setValue:aString forKey:editedFieldKey];
NSLog(@"Textview text saved");
default:
break;
}
[self.tableView reloadData];
}
【问题讨论】:
-
您正在泄漏字符串。您应该替换“NSString *aString = [[NSString alloc] init];”用“NSString *aString;”
标签: iphone uitextview