0

アプリでWEPopoverを使用して、いくつかのボタンを含むポップオーバーコントローラーをポップアップします。これは、wepopoverコントローラーアクションをtabbarIteamに配置すると機能しますが、UIButtonをクリックするとポップオーバーを取得する必要があります。これを行う方法は、ポップオーバーを表示するためのbarbuttonitemコードです。 。

-(IBAction)_clickbtnAccount:(id)sender
{
    if (!self.popoverController)
    {
        UIViewController *contentViewController = [[pageAccount alloc]initWithNibName:@"pageAccount" bundle:nil];
        self.popoverController = [[[popoverClass alloc] initWithContentViewController:contentViewController] autorelease];
        self.popoverController.delegate = self;
        self.popoverController.passthroughViews = [NSArray arrayWithObject:self.navigationController.navigationBar];

        [self.popoverController presentPopoverFromBarButtonItem:sender
                                       permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown) 
                                                       animated:YES];
        [contentViewController release];
    }
    else
    {
        [self.popoverController dismissPopoverAnimated:YES];
        self.popoverController = nil;
    }
}

-(IBAction)_clickbtnAccount:(id)sender
{
    if (!self.popoverController)
    {
        UIButton *senderButton = (UIButton *)sender;
        [self.popoverController presentPopoverFromRect:[senderButton frame]
                                                inView:@"pageAccount"
                              permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown) 
                                              animated:YES];        
    }
    else
    {
        [self.popoverController dismissPopoverAnimated:YES];
        self.popoverController = nil;
    }
}
4

3 に答える 3

3

WEPopoverだから、からではUIBarButtonItemなく、から表示したいですよねUIButton?!使用するだけ

- (void)presentPopoverFromRect:(CGRect)rect 
                    inView:(UIView *)view 
  permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections 
                  animated:(BOOL)animated;

それ以外の

- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item 
           permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections 
                           animated:(BOOL)animated;

そしてあなたのrectを渡しますUIButton

例としてコードを取り上げます。

-(IBAction)_clickbtnAccount:(id)sender
{
    if (!self.popoverController) {

        UIViewController *contentViewController = [[pageAccount alloc]initWithNibName:@"pageAccount" bundle:nil];
        self.popoverController = [[[popoverClass alloc] initWithContentViewController:contentViewController] autorelease];
        self.popoverController.delegate = self;
        self.popoverController.passthroughViews = [NSArray arrayWithObject:self.navigationController.navigationBar];

        UIButton *senderButton = (UIButton *)sender;
        [self.popoverController presentPopoverFromRect:[senderButton frame]
                        inView:self.view
                                        permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown) 
                  animated:YES];

        [contentViewController release];
    } else {
        [self.popoverController dismissPopoverAnimated:YES];
        self.popoverController = nil;
    }
}
于 2011-10-04T13:54:53.400 に答える
0

WEPopoverは基本的に、UITableviewを使用して多くの制御を行うポップオーバー内に複数のオプションを表示するために使用されます。

これは、WEPopOverを使用してボタンクリック時にポップアップを表示する方法です。

-(void)showPopOver:(id)sender{
    if (self.popoverController) {
            [self.popoverController dismissPopoverAnimated:YES];
            self.popoverController = nil;
        } 
        PopOverTable *contentViewController = [[PopOverTable alloc] initWithStyle:UITableViewStylePlain];
        contentViewController.delegatePopoverItemSelectedDelegate=self;
            rectForPopover = [self.view convertRect:btn.bounds fromView:btn];
                self.popoverController = [[[popoverClass alloc] initWithContentViewController:contentViewController] autorelease];

                if ([self.popoverController respondsToSelector:@selector(setContainerViewProperties:)]) {
                    [self.popoverController setContainerViewProperties:[self improvedContainerViewProperties]];
                }
                self.popoverController.delegate = self;
                [self.popoverController presentPopoverFromRect:rectForPopover  
                                                        inView: self.view 
                                      permittedArrowDirections:(UIPopoverArrowDirectionAny)
                                                      animated:YES];
        }
于 2011-10-04T14:10:06.293 に答える
0

受け入れられた解決策では、iOS 7でのWEPopoverの回転の問題が発生します:基本的には、ナビゲーションバーの左側にあるUIBarButtonItemのカスタムボタンを指していましたが、回転すると、ポップアップが画面の右側に移動してそこにとどまりますさらなる回転で。

于 2013-11-01T15:18:34.093 に答える