如果字符串来自UITextview而不是UITextfield,我尝试将字符串从一个viewcontroller传递到另一个视图控制器时会遇到一个奇怪的问题。 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(@”返回对象:%@,字段类型:%@“,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];
}
答案 0 :(得分:0)
[delegate updateSite:aString :editedFieldKey :fieldType];
应该是
[delegate updateSite:aString editedFieldKey:fieldType];
和方法名称:
-(void)updateSite:(NSString *)aString :(NSString *)editedFieldKey :(int)fieldType;
应该是:
-(void)updateSite:(NSString *)aString (NSString *)editedFieldKey :(int)fieldType;
你能试试吗?
答案 1 :(得分:0)
这是我将其更改为编辑文本字段
的内容[self.delegate editingViewController:self didTypeText:aString forKey:editedFieldKey forFieldType:fieldType];
对于textview,我创建了一个单独的控制器来处理它(并且它可以工作)
[self.delegate editTextViewController:self didEditText:textView.text forKey:editedFieldKey];