I have a tableview with UITextFields to build a form. I then have a button in the toolbar which launches a modal view controller to select some data which is then passed back to the tableview. However, the new data that was selected does not get refreshed into the UITextField using textField.text = valueReturnedFromModal syntax. Is there something I’m missing?
I see that the data is being returned properly from the modal so that is not the issue. I’m just having trouble forcing the UITextField to refresh with the new data. I’ve tried forcing a reloadData on the tableview as well.
So from the modal view, here’s the code that passes data back:
- (void)doneAccountSelection:(id)sender
{
[delegate didSelectAccount:currentAccount];
[self dismissModalViewControllerAnimated:YES];
}
and here’s the actual method in the delegate:
- (void)didSelectAccount:(SFAccount *)selectedAccount
{
//Ensure a valid deal exists for the account to be attached to
[self createDealObjectIfNeeded];
//Set the deal account
[self.deal setAccount:selectedAccount];
//Refresh the text fields
//Tag 3: Account Name field
UITextField *acct_name = (UITextField *) [self.view viewWithTag:3];
[acct_name setText:self.deal.account.field_acct_name_value];
//Tag 4: Account City field
UITextField *acct_city = (UITextField *) [self.view viewWithTag:4];
[acct_city setText:self.deal.account.field_acct_city_value];
//Save the context changes. A new deal gets created above if one does not exist.
if ([self saveModel]) NSLog(@"Acct object created, attached to deal successfully!");
[self.tableView reloadData];
}
After some serious debugging found that
self.accountwas being used incellForRowAtIndexPathto set the initialUITextFieldvalues within theUITableViewCell. Then after modal selection completed, I was only updating the account reference for the deal object and not updating theself.accountobject.I then added to this by creating a new method called
updateTextFieldsAfterModalFinishedand moved the code to update theUITextFields there. This method was then called fromdidSelectAccountwhich is the delegate method for modal view that is dismissed. Things are now working as expected and theUITextFieldsget updated after modal selection is finished.