ios - Prepopulating a UITextField with Core Data and NSFetchedResultsControllers -
i have simple application , require bit of assistance 1 new feature.
the application table view (tv1) populated user adding entry (a button in navigation bar modally brings new view controller user filling in name, event , amount text field , selecting date date picker).
the table view controller part of tab bar controller first tab shows (timeline) , second tab shows list of events. if click on event, segue on see transactions event.
i've added bar button item here segues add entry view controller, aim of having event selected.
what mean is:
say have 3 events called wedding, birthday , anniversary in transactions. if click on event tab, you'll see wedding, birthday , anniversary in table view. clicking birthday show transactions event = birthday.
i have bar button item allow me add entries screen, because it's coming birthday event, want event text field filled in, in add entry name of event (birthday in case).
i'm using core data , nsfetchedresultscontroller.
the situation right is, when press button add new entry selected event (birthday), it's not pre-configuring event text field birthday in add entry screen.
here's code should explain i'm doing.
from event tab
// segues on selected event (birthday). - (void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender { nsindexpath *indexpath = [self.eventtableview indexpathforcell:sender]; occasion *selectedoccasion = [self.fetchedresultscontroller objectatindexpath:indexpath]; if ([segue.identifier isequaltostring:@"selected occasion segue"]) { eselectedoccasiontableviewcontroller *selectedoccasiontvc = [segue destinationviewcontroller]; [selectedoccasiontvc setoccasion:selectedoccasion]; } } from selected event tab (birthday), create 2 segues, 1 editing cell , 1 creating new entry:
- (void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender { nsindexpath *indexpath = [self.selectedoccasiontableview indexpathforcell:sender]; transaction *seletedtransaction = [self.fetchedresultscontroller objectatindexpath:indexpath]; // first segue "edit" existing entry if ([segue.identifier isequaltostring:@"editable cell"]) { edetailviewcontroller *dvc = (edetailviewcontroller *)segue.destinationviewcontroller; dvc.selectedtransaction = seletedtransaction; } // segue create new entry event else if ([segue.identifier isequaltostring:@"create new entry event"]) { eddentryviewcontroller *eappentryviewcontroller = (eaddentryviewcontroller *)segue.destinationviewcontroller; [eappentryviewcontroller setselectedtransaction:selectedtransaction]; } } the first segue editing cell (which works perfectly), in second segue, 1 i'm interested in here, i'm not clicking on cell; i'm clicking on bar button item modally bring add entry. want take "event" (birthday) table view , pre-fill "event text field" in add entry.
the setselectedtransaction in add entry is: - (void)setselectedtransaction:(transaction *)selectedtransaction { _selectedtransaction = selectedtransaction; self.occasiontextfield.text = _selectedtransaction.occasion.title; } i can't imagine i'm far getting working, assistance on great because i'm stuck.
should setting in viewdidload? (that did not work either).
i'm not selecting table view cell why understand [eappentryviewcontroller setselectedtransaction:selectedtransaction]; line isn't passing anything, because i'm clicking on bar button item, not table view cell.
the model is: transaction entity links date , event entities.
i have resolved issue in following way:
eaddentryviewcontroller *eappentryviewcontroller = (eaddentryviewcontroller *)segue.destinationviewcontroller; [eappentryviewcontroller setselectedevent:self.occasion.title]; which called:
- (void)setselectedevent:(nsstring *)selectedevent { _selectedevent = selectedevent; } in viewwillappear, did:
- (void)viewwillappear:(bool)animated { [super viewwillappear:animated]; self.occasiontextfield.text = self.selectedevent; } this works way , i'm happy this.
Comments
Post a Comment