gpt4 book ai didi

iphone - 如何实现UIBarButtonItem的角标(Badge)?

转载 作者:行者123 更新时间:2023-12-01 17:02:56 24 4
gpt4 key购买 nike

我想在控制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?

最佳答案

这就是我的方法,我们没有为目标和操作重定向,而是为它创建了一个方法,请参见-(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];
}

关于iphone - 如何实现UIBarButtonItem的角标(Badge)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3670270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com