У меня странная проблема с попыткой передать строку из одного контроллера представления в другой контроллер представления, если строка происходит из UITextview вместо UITextfield.UITextview.text и UITextfield.text имеют тип NSString.
Следующий код принимает Textfield.text или Textview.text в зависимости от fieldType и помещает его в строку с именем 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];
}