2010-06-15 30 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];