userButtonPressed
wird mit dem UIButton
als Parameter aufgerufen, wenn der userUIBtn
geklickt wird.Ein Popover um ein UIButton in UIBarButtonItem anzeigen
Allerdings möchte ich stattdessen auf die UIBarButtonItem
zugreifen, um ein Popover herum anzuzeigen.
Hier ist die generateToolbar()
Methode, die Benutzer Navigationsschaltfläche generiert.
-(void) generateToolbar {
// Initialize the `ButtonFactory`
ButtonFactory *buttonFactory = [[ButtonFactory alloc] init];
// Generate some `UIButton(s)`
UIButton *userUIBtn = [buttonFactory createButtonWithButtonType:ButtonTypeUser];
userUIBtn.frame = CGRectMake(0,0,55,20);
// Add an action to the `UIButton`
[userUIBtn addTarget:self action:@selector(userButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
// Generate an `UIBarButtonItem` with the `UIButton` as basis view
UIBarButtonItem *userBtn = [[UIBarButtonItem alloc] initWithCustomView:userUIBtn];
// Add the `UIBarButtonItem` into the right side of the `navigationItem`
self.navigationItem.rightBarButtonItems = [[NSArray alloc] initWithObjects: userBtn, nil];
}
Hier ist die userButtonPressed()
Methode, die durch Drücken der Benutzer Taste und erzeugt eine popover um diese Taste ausgelöst wird - es wird nicht genannt.
- (IBAction) userButtonPressed:(UIBarButtonItem*)sender {
// Initialize the `ButtonFactory`
ButtonFactory *buttonFactory = [[ButtonFactory alloc] init];
// Generate some `UIButton(s)`
UIButton *feedbackUIBtn = [buttonFactory createButtonWithButtonType:ButtonTypeFeedback iconVisibility:YES textVisibility:YES capitalization:NO iconSize:20.0 textSize:20.0];
[feedbackUIBtn addTarget:self action:@selector(feedbackBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
feedbackUIBtn.frame = CGRectMake(0,50,300,50);
// Create a `UIViewController` and add the `UIButtons` as subviews
UIViewController *viewController = [[UIViewController alloc] init];
[viewController.view addSubview:feedbackUIBtn];
// Present the `UIViewController`
viewController.modalPresentationStyle = UIModalPresentationPopover;
[self presentViewController:viewController animated:YES completion:nil];
// Set up the `UIPopoverPresentationController`
UIPopoverPresentationController *popController = [viewController popoverPresentationController];
popController.permittedArrowDirections = UIPopoverArrowDirectionUp;
popController.barButtonItem = sender;
}