objective c - Switching between 3 pages with segmentend button requires 2 taps? -
here setup :
home page, profile page, friends page.
in each page, there exact same segmentend button : [home | profile | friends]
when tap on segment, segue called , page changed.
so, when i'm in profile, profile selected, , can tap on either home or friends ; when do, new page loaded, new segment selected , can again if want to.
in storyboard, have 3 pages " ton " of custom segue (i used custom animation purposes).
in code, have :
(void)movetopage { if ([self.pageswitch selectedsegmentindex] == 1) { [self performseguewithidentifier:@"fromhometoprofile" sender:self];; } if ([self.pageswitch selectedsegmentindex] == 2) { [self performseguewithidentifier:@"fromhometofriends" sender:self];; } } - (ibaction)pageswitchbutton:(id)sender { [self.pageswitch addtarget:self action:@selector(movetopage) forcontrolevents:uicontroleventvaluechanged]; }
the names self explanatory.
my problem (we're getting it) : when tap on segment, becomes selected, nothing happens first time. if tap new segment (that not 1 current page), works fine. basically, first tap ignored, second 1 works. have tap page, , tap isn't same work.
any idea? i'm kind of stuck unique problem :d
okay found ; didn't understand how addtarget:action:forcontrolevents
works.
we need put the
[self.pageswitch addtarget:self action:@selector(movetopage) forcontrolevents:uicontroleventvaluechanged];
in viewdidload
, works fine. has put in 3 pages.
here explanation got irl, feel free comment/add stuff if i'm wrong :
the addtarget:action:forcontrolevents:
method behaviour page has. " when happens, ". because in action, page learned behaviour when clicked first time, , knew how react afterwards. page know first time, has learn behaviour @ earliest stage of creation, hence in viewdidload
.
because there nothing left in action, can remove completly , remove links in storyboard. need outlet , movetopage method work.
i hope helps :)
Comments
Post a Comment