ios - Dimissing TableViewController unwinds to first storyboard -


i have uitableviewcontroller embedded in uinavigationcontroller.

when click button in detail view (detail view in uitabviewcontroller) showlist uitableviewcontroller (list table view) called list presented. if click back button in navigation controller, taken correct screen: detail view shown blue line

if select list item delegate method didselectfromlist called didselectrowatindexpath , app taken main screen (home view) shown red line.

what want purple line.

enter image description here

any help?

attempt 1:

i let delegate dismiss list tablevc.

#import "listtableviewcontroller.h" @interface calldetailviewcontroller () <listtableviewcontrollerdelegate> @property (nonatomic, strong) lotlisttableviewcontroller * lltvc; @end   - (void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender{      if ([[segue identifier] isequaltostring:@"segue_list"]) {         self.lltvc = (listtableviewcontroller*)segue.destinationviewcontroller;         self.lltvc.delegate = self;     }  }  - (void) showlist {     [self performseguewithidentifier:@"segue_list" sender:self]; }  #pragma mark list selection delegate method  - (void) didselectfromlist:(nsstring *)item {     [self.lltvc dismissviewcontrolleranimated:yes completion:^{         nslog(@"did select item:  %@", item);     }]; } 

in list table view controller

- (void) tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath {     ///.. stuff find correct string     [self.delegate didselectfromlist:item];   } 

attempt 2:

here let list tablevc dimiss itself.

#import "listtableviewcontroller.h" @interface calldetailviewcontroller () <listtableviewcontrollerdelegate>  @end   - (void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender{       if ([[segue identifier] isequaltostring:@"segue_lots"]) {         nslog(@"going lot list");          uinavigationcontroller * nvc = (uinavigationcontroller*)segue.destinationviewcontroller;         lotlisttableviewcontroller *lltvc = [nvc childviewcontrollers][0];         lltvc.delegate = self;      }  }  - (void) showlotlist {     [self performseguewithidentifier:@"segue_lots" sender:self];  } #pragma mark list selection delegate method  - (void) didselectfromlist:(nsstring *)item {        nslog(@"did select item:  %@", item);  } 

in list table view controller

- (void) tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath {     ///.. stuff find correct string      [self dismissviewcontrolleranimated:yes completion:^{         [self.delegate didselectfromlist:item];      }]; } 

i have tried didselectrowatindexpath in list tablevc

[self.navigationcontroller dismissviewcontrolleranimated:yes completion:^{         [self.delegate didselectfromlist:item];      }]; 

if keep on pushing view controller, added navigation stack, if [self dismiss or [self.navigationcontroller dismiss, navigation stack cleared , betaken rootviewcontroller.

either can pop 1 view controller or instead of pushing navigation controller detailvc, present navigation controller has list table vc. in case [self.nav dismissviewcontroller work,


Comments