DJPlayer
DJPlayer

Reputation: 3294

UIButton UIPopUpController programmatically

having difficulty getting UIButton Items to show.. I want to place several UIButtons within my UIPopUpController. I'm doing everything in a storyboard and I need to do this section programmatically.

- (void)showPopover:(id)sender
{
    if(![popoverController isPopoverVisible])
    {
        myPopOver = [[PopUp alloc] init];
        popoverController = [[UIPopoverController alloc] initWithContentViewController:myPopOver] ;
        [popoverController  setPopoverContentSize:CGSizeMake(300, 200.0f)];
        permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        CGRect rect = (CGRect)[sender frame];
        rect.origin.y = self.view.frame.size.height - rect.size.height;           
        [popoverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    }
    else
    {
        [popoverController dismissPopoverAnimated:YES];
    }
}

Upvotes: 1

Views: 724

Answers (1)

Lorenzo B
Lorenzo B

Reputation: 33428

You could use a UINavigationController (it has already a navigation bar where you can attach buttons items) and add it as the content of your UIPopoverController. The UINavigationController can be istantiated using the initWithRootViewController method. In this case the controller would be your Popup class. For example, inside your showPopover method, you could do the following:

PopUp* myPopOver = [[PopUp alloc] init];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:myPopOver];
popoverController = [[UIPopoverController alloc] initWithContentViewController:navController];
// do other stuff here to present you UIPopoverController
[myPopOver release];
[navController release];

Now, inside your PopUp class, within viewDidLoad method, you can customize the UINavigationController navigationBar. For example:

- (void)viewDidLoad {
  [super viewDidLoad];

  UIBarButtonItem *aButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(somethingSelector:)];          
  self.navigationItem.rightBarButtonItem = aButtonItem;
  [aButtonItem release];
}

where somethingSelector is like the following:

- (void)somethingSelector:(id)sender
{
   // your custom actions
}

EDIT

Alternatively you can avoid to use the UINavigationController and create UIToolbar inside your PopUp class. Inside the UIToolbar you can attach UIBarButtonItems. See UIToolbar Class Reference

Upvotes: 1

Related Questions