2010-09-08 25 views
2

我想濮上的UIBarButtonItem徽章,在一個SPLITVIEW如何爲UIBarButtonItem實現徽章?

此代碼控制酥料餅沒有做什麼:

- (void)splitViewController: (UISplitViewController*)svc 
    willHideViewController:(UIViewController *)aViewController 
      withBarButtonItem:(UIBarButtonItem*)barButtonItem 
     forPopoverController: (UIPopoverController*)pc 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)]; 
    [view setBackgroundColor:[UIColor greenColor]]; 
    UIView *badge = [[UIView alloc] initWithFrame:CGRectMake(36, 0, 8, 8)]; 
    [badge setBackgroundColor: [UIColor redColor]]; 
    [view addSubview:badge]; 
    [badge release]; 


    UIBarButtonItem *aBBItem = [[UIBarButtonItem alloc] initWithCustomView:view]; 
    [aBBItem setTarget:barButtonItem.target]; 
    [aBBItem setAction:barButtonItem.action]; 
    NSLog(@"%@ %s", aBBItem.target, aBBItem.action); 
    [view release]; 

    barButtonItem.title = @"Bars"; 
    NSMutableArray *items = [[toolbar items] mutableCopy]; 
    [items insertObject:aBBItem atIndex:0]; 
    [aBBItem release]; 
    [toolbar setItems:items animated:YES]; 
    [items release]; 
    self.popoverController = pc; 
} 

而以下嘗試拋出一個錯誤:

- (void)splitViewController: (UISplitViewController*)svc 
    willHideViewController:(UIViewController *)aViewController 
      withBarButtonItem:(UIBarButtonItem*)barButtonItem 
     forPopoverController: (UIPopoverController*)pc 
{ 
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)]; 
    UIView *badge = [[UIView alloc] initWithFrame:CGRectMake(36, 0, 8, 8)]; 
    [badge setBackgroundColor: [UIColor redColor]]; 
    [button addSubview:badge]; 
    [badge release]; 
    [button addTarget:barButtonItem.target action:barButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 
    [button setTitle:@"Bars" forState:UIControlStateNormal]; 

    UIBarButtonItem *aBBItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
    [button release]; 

    barButtonItem.title = @"Bars"; 
    NSMutableArray *items = [[toolbar items] mutableCopy]; 
    [items insertObject:aBBItem atIndex:0]; 
    [toolbar setItems:items animated:YES]; 
    [aBBItem release]; 
    [items release]; 
    self.popoverController = pc; 
} 

錯誤:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Popovers cannot be presented from a UIBarButtonItem that is not in a toolbar or navigation bar already.'

如何將徽章添加到UIBarButtonItem?

回答

0

這是我做的,而不是重定向的目標和行動,我們創造了它的方法,請參閱
-(void)pop:(UIButton *)sender

-(void)splitViewController: (UISplitViewController *)svc 
    willHideViewController: (UIViewController *)aViewController 
     withBarButtonItem: (UIBarButtonItem *)barButtonItem 
     forPopoverController: (UIPopoverController *)pc 
{ 

    // configure barButton 
    UIButton * button = [UIButton buttonWithType : UIButtonTypeCustom]; 
    UIImage * image = [UIImage imageNamed:@ "barbutton.png"]; 
    [button setImage :image forState: UIControlStateNormal]; 
    button.frame = CGRectMake(0, 0, image.size.width, image.size.width); 
    [button addTarget: self 
       action: @selector(pop:) 
    forControlEvents: UIControlEventTouchUpInside]; 

    barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

    NSMutableArray * items = [[toolbar items] mutableCopy]; 
    [items insertObject: barButtonItem atIndex: 0]; 
    [toolbar setItems: items animated: YES]; 
    [items release]; 
    self.popoverController = pc; 
    [barButtonItem release]; 
} 

-(void)pop: (UIButton *)sender { 
    [self.popoverController presentPopoverFromRect: sender.frame 
              inView: self.view 
          permittedArrowDirections: UIPopoverArrowDirectionUp 
              animated: YES]; 
} 
+0

哇,我沒想到會有答案了。謝謝! – vikingosegundo 2010-12-02 20:16:02

+0

歡迎光臨! – vikingosegundo 2010-12-02 20:25:36

+11

此代碼中添加的徽章在哪裏? – RPM 2011-09-12 18:32:30