ios - How can i add 2 segue on 1 action? -
i have tableview showing array items. . connected push style segue detailviewcontroller screen storyboard dont want items go detailviewcontroller made controller ;
-(void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender{ if (sender == self.btnekle) return; if (sender == self.btnkredikartlarim) return; nsstring *bankaadi = [[mainlist objectatindex:indexpath.row] objectforkey:@"bankaadi"]; if (bankaadi.length > 1) { kartdetay *vc = [self.storyboard instantiateviewcontrollerwithidentifier:@"kartdetay"]; [self presentviewcontroller:vc animated:yes completion:nil]; }
if bankaadi.length > 1 app should go kartdetay
if not mean else app should go detailviewcontroller
these codes working there error in compiler.
unbalanced calls begin/end appearance transitions .
sorry english know didn't describe myself please try me.
thanks !
---updated area----
first of thank answer.but doesnt work or couldnt that.
1- created 2 manuel different segues kartdetay("taksit" segue name) , detayekran("detay" segue name)..
2-i used these codes..
-(void)tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath { nsindexpath *indexpath2 = [self.tableview indexpathforselectedrow]; bankaadi = [[mainlist objectatindex:indexpath2.row] objectforkey:@"bankaadi"]; if (bankaadi.length > 1) { [self performseguewithidentifier:@"taksit" sender:nil]; } else { [self performseguewithidentifier:@"detay" sender:nil]; }
}
-(void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender{ if ([segue.identifier isequaltostring:@"taksit"]) { //if (sender == self.btnekle) return; //if (sender == self.btnkredikartlarim) return; kartdetay *vc = [self.storyboard instantiateviewcontrollerwithidentifier:@"kartdetay"]; [self presentviewcontroller:vc animated:yes completion:nil]; } else { detayekran *detayekran = [self.storyboard instantiateviewcontrollerwithidentifier:@"detayekran"]; [self presentviewcontroller:detayekran animated:yes completion:nil]; }
when run app , tap first cell bankaadi>1.
app can go kartdetay screen compiler says :
unbalanced calls begin/end appearance transitions .
thank answer again.
----reupdated area --- problem solved greg... thank greg...
i made huge mistake these codes coz call detayekran *detayekran = [self.storyboard instantiateviewcontrollerwithidentifier:@"detayekran"]; [self presentviewcontroller:detayekran animated:yes completion:nil];
in prepareforsegue method. when delete instantiate codes in prepareforsegue methods app working fine...
so
greg codes working charm.. thank greg !
when segue called prepareforsegue:segue method called , handles transition, shouldn't call presentviewcontroller or push view controller manually.
the best way create 2 segue kartdetay , detailviewcontroller 2 different identifiers in storyboard.
and override didselectrowatindexpath method, check condition , run appropriate segue:
-(void)tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath { nsstring *bankaadi = [[mainlist objectatindex:indexpath.row] objectforkey:@"bankaadi"]; if (bankaadi.length > 1) { [self performseguewithidentifier:@"your1identifier" sender:nil] } else [self performseguewithidentifier:@"your2identifier" sender:nil] }
if need pass parameters use prepareforsegue method:
-(void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender{ if ([segue.identifier isequaltostring:@"your1identifier"]) { kartdetay *vc = [self.storyboard instantiateviewcontrollerwithidentifier:@"kartdetay"]; [self presentviewcontroller:vc animated:yes completion:nil]; } else { //handle other view controller } }
just remember replace segue identifiers one.
Comments
Post a Comment