向弹出框的 uibarbuttonitem 添加自定义视图

Posted

技术标签:

【中文标题】向弹出框的 uibarbuttonitem 添加自定义视图【英文标题】:adding a custom view to uibarbuttonitem of a popover 【发布时间】:2012-03-19 09:21:42 【问题描述】:

在阅读了苹果的示例:MultipleDetailViews 演示了如何将UIPopOverController 与两个详细视图控制器一起使用后,我无法弄清楚如何将自定义视图添加到存在于splitViewController 委托中的barButtonItem方法:

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

    self.popoverController = pc;
    barButtonItem.text = @"root view controller";
    self.rootPopoverButtonItem = barButtonItem;

    UIViewController <SubstitutableDetailViewController> *detailViewController = [mySplitViewController.viewControllers objectAtIndex:0];
    [detailViewController showRootPopoverButtonItem:self.rootPopoverButtonItem];

popover 按钮的默认形状效果很好,但是当我尝试这样的事情时:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *customImage = [UIImage imageNamed:@"popOver.png"];
[button setBackgroundImage: [UIImage imageNamed:@"popOver.png"] forState:UIControlStateNormal];
button.frame= CGRectMake(0.0, 0.0, customImage.size.width, customImage.size.height);
[button addTarget:self action:@selector(???) forControlEvents:UIControlEventTouchUpInside];
barButtonItem.customView = button;

我不知道这个按钮的选择器可以让弹出框正确显示,我的弹出框在没有使用UISplitViewController 的委托方法的选择器的情况下运行良好,那么我应该在这里放置什么样的选择器?

【问题讨论】:

【参考方案1】:

为什么要向栏按钮项添加按钮而不是图像视图?使用图像视图(或禁用按钮上的用户交互)将导致应用程序使用条形按钮项目选择器和目标。

如果你还想使用单独的按钮,那么你可以做的是:

[button addTarget:barButtonItem.target action:barButtonItem.action forControlEvents:UIControlEventTouchUpInside];

这将复制默认的条形按钮项目目标和操作。

【讨论】:

以上是关于向弹出框的 uibarbuttonitem 添加自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

UIPopoverViewController presentModalViewController 动画

将弹出框添加到以编程方式添加的 UIBarButtonItem 并将图像添加到相同的弹出框 Swift

隐藏弹出框控制器

我无法将按钮添加到弹出框

无法使用 UIBarButtonItem 显示弹出框控制器

如何将箭头添加到材质 UI 弹出框,如 ToolTip