. greenisus, UISplitViewController. , , popover . , , popover, , popover, UIPopoverControllerDelegate.
-, :
@interface LaunchScene : NSObject <UISplitViewControllerDelegate, UIPopoverControllerDelegate>
{
UISplitViewController* _splitViewController;
UIToolbar* _toolbar;
SEL _svcAction;
id _svcTarget;
UIPopoverController* _popover;
BOOL _popoverShowing;
}
-(void) svcToolbarClicked: (id)sender;
_svcAction _svcTarget addess greenisus, , .
. , UISplitViewController subviews. / .
- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc
{
_popoverShowing = FALSE;
if(_toolbar == nil)
{
barButtonItem.title = @"Title goes here";
_svcTarget = barButtonItem.target;
_svcAction = barButtonItem.action;
barButtonItem.target = self;
barButtonItem.action = @selector(svcToolbarClicked:);
_toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 1024, 44)];
[_toolbar setItems:[NSArray arrayWithObject:barButtonItem] animated:YES];
}
UIViewController* temp = [_splitViewController.viewControllers objectAtIndex:1];
[temp.view addSubview:_toolbar];
}
, . , .
-(void) svcToolbarClicked: (id)sender
{
if(_popoverShowing)
{
[_popover dismissPopoverAnimated:TRUE];
}
else
{
[_svcTarget performSelector:_svcAction];
}
_popoverShowing = !_popoverShowing;
}
UISplitViewControllerDelegate
- (void)splitViewController:(UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)button
{
[_toolbar removeFromSuperview];
}
- (void)splitViewController:(UISplitViewController*)svc popoverController:(UIPopoverController*)pc willPresentViewController:(UIViewController *)aViewController
{
_popover = pc;
_popover.delegate = self;
}
. , popover, , , _popoverShowing boolean , , popover. , UIPopoverControllerDelegate, , .
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
_popoverShowing = FALSE;
_popover = nil;
}
, , ( ) UISplitViewController StackOverflow. , - . , .; -)