objective c - How do you specify the origin of the arrow on a popover segue with OS X 10.10 storyboards -
i'm playing around storyboarding in os x 10.10 app. have nstableview
that, when click specific row opens segue goes popover contains nsviewcontroller
.
how specify origin nspoint
of arrow popover? right now, points nstableview
in middle. assumed in prepareforsegue
, can't seem figure out. prepareforsegue
doesn't seem have understanding nsviewcontroller
contained in nspopover
any ideas?
you should file enhancement request radar behavior if think should provided framework in way.
but workaround in meantime, can create own custom nsstoryboardsegue subclass help this.
@interface tablepopoversegue : nsstoryboardsegue @property (weak) nstableview *anchortableview; @property nsrectedge preferrededge; @property nspopoverbehavior popoverbehavior; @end @implementation tablepopoversegue - (void)perform { if ([self anchortableview]) { nsinteger selectedcolumn = [[self anchortableview] selectedcolumn]; nsinteger selectedrow = [[self anchortableview] selectedrow]; // if can pick specific row show from, that; otherwise fallback showing tableview nsview *anchorview = [self anchortableview]; if (selectedrow >= 0) { anchorview = [[self anchortableview] viewatcolumn:selectedcolumn row:selectedrow makeifnecessary:no]; } // utilize presentation api popover can dismissed using -dismisscontroller:. [[self sourcecontroller] presentviewcontroller:[self destinationcontroller] aspopoverrelativetorect:[anchorview bounds] ofview:anchorview preferrededge:[self preferrededge] behavior:[self popoverbehavior]]; } } @end
this can specified in ib in inspector panel segue (just ios):
and in source view controller's prepareforsegue:, can set segue:
- (void)prepareforsegue:(nsstoryboardsegue *)segue sender:(id)sender { if ([segue iskindofclass:[tablepopoversegue class]]) { tablepopoversegue *popoversegue = (tablepopoversegue *)segue; popoversegue.preferrededge = nsmaxxedge; popoversegue.popoverbehavior = nspopoverbehaviortransient; popoversegue.anchortableview = [self tableview]; } }
objective-c osx nsviewcontroller nspopover
No comments:
Post a Comment