2011-10-04 43 views
0

我在我的應用程序中使用WEPopover彈出一個包含一些按鈕的彈出窗口控制器,它工作時,我把tabpopIteam中的wepopover控制器動作,但我需要得到彈出窗口,當我點擊UIButton.How做到這一點,這是我的barbuttonitem代碼顯示popover。從UIButton而不是UIBarButtonItem顯示WEPopover

-(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; 
    } 
} 

回答

3

所以,你不希望顯示來自UIBarButtonItem但從UIButton,右一個WEPopover? 只需使用的

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

代替

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

,並通過在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; 
    } 
} 
+0

感謝你的回答,但你能解釋我的按鈕的重量如何? – ICoder

+0

剛剛編輯我的答案 - 希望現在更容易理解。 – tilo

+0

- (IBAction爲)_clickbtnAccount:(ID)發送方 { \t如果(!self.popoverController){ \t \t \t \t \t \t的UIButton * senderButton =(的UIButton *)發送者; \t \t [self.popoverController presentPopoverFromRect:[senderButton幀] \t \t \t \t \t \t \t \t \t \t \t \t inView:@ 「pageAccount」 \t \t \t \t \t \t \t permittedArrowDirections:(UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown) \t \t \t \t \t \t \t \t \t \t \t animated:YES]; \t \t \t \t \t }否則{ \t \t [self.popoverController dismissPopoverAnimated:YES]; \t \t自我。popoverController = nil; \t} \t \t } – ICoder

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]; 
     } 
+0

delegatePopoverItemSelectedDelegate:this是不是一個結構或聯盟和rectforpopover undeclerd錯誤 – ICoder

+0

夥計..我的PopOverTable類的委託。使用你自己的班級代表。你不是試圖在popOver裏面展示餐桌嗎? – Hisenberg

0

所接受的解決方案,我得到了WEPopover旋轉問題的iOS 7下:基本上它是指着的UIBarButtonItem自定義按鈕在導航欄的左側,但在旋轉時,彈出窗口會移動到屏幕的右側,並在進一步的旋轉中停留在那裏。