2010-06-15 60 views
0

我有一个奇怪的问题,试图从一个viewcontroller传递一个字符串到另一个视图控制器,如果字符串来自UITextview而不是UITextfield。 UITextview.text和UITextfield.text都是NSString类型。UITextView问题

下面的代码根据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

你”重新泄漏aString。你应该替换“NSString * aString = [[NSString alloc] init];”与“NSString * aString;” – 2010-06-17 07:25:47

回答

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; 

你可以试试吗?

+0

语法[delegate updateSite:aString:editedFieldKey:fieldType]实际上是正确的 - 他没有命名该参数。 editedFieldKey是实际参数。虽然很混乱。 此外,方法名称是正确的。 – 2010-06-17 07:24:25

0

这就是我把它改成编辑文本框

[self.delegate editingViewController:self didTypeText:aString forKey:editedFieldKey forFieldType:fieldType]; 

和TextView中我创建了一个单独的控制器,处理它(和它的作品)

[self.delegate editTextViewController:self didEditText:textView.text forKey:editedFieldKey];