UITextView的问题

时间:2010-06-15 08:40:56

标签: iphone uitextview

如果字符串来自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]; 
}

2 个答案:

答案 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];