UIButton UIPopUpController 以编程方式

Posted

技术标签:

【中文标题】UIButton UIPopUpController 以编程方式【英文标题】:UIButton UIPopUpController programmatically 【发布时间】:2011-12-21 20:08:01 【问题描述】:

很难让UIButton 显示项目。我想在我的UIPopUpController 中放置几个​​UIButtons。我在故事板中做所有事情,我需要以编程方式完成这一部分。

- (void)showPopover:(id)sender

    if(![popoverController isPopoverVisible])
    
        myPopOver = [[PopUp alloc] init];
        popoverController = [[UIPopoverController alloc] initWithContentViewController:myPopOver] ;
        [popoverController  setPopoverContentSize:CGSizeMake(300, 200.0f)];
        permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        CGRect rect = (CGRect)[sender frame];
        rect.origin.y = self.view.frame.size.height - rect.size.height;           
        [popoverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    
    else
    
        [popoverController dismissPopoverAnimated:YES];
    

【问题讨论】:

这个例子中没有与UIBarButtonItem相关的内容...你有什么问题? 哦,好的。 OP 没有使用-presentFromBarButtonItem:permittedArrowDirections:animated: 的事实让我震惊。这是显而易见的选择。 对不起,它应该是 UIButton(不是 UIBarButton),很抱歉让修改花了这么长时间。我发布了,这是我第一次查看。我试图在一个空的 UIPopUpController 中放置几个​​ UIButtons。 【参考方案1】:

您可以使用 UINavigationController(它已经有一个导航栏,您可以在其中附加按钮项)并将其添加为 UIPopoverController 的内容。 UINavigationController 可以使用 initWithRootViewController 方法进行实例化。在这种情况下,控制器将是您的 Popup 类。例如,在您的 showPopover 方法中,您可以执行以下操作:

PopUp* myPopOver = [[PopUp alloc] init];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:myPopOver];
popoverController = [[UIPopoverController alloc] initWithContentViewController:navController];
// do other stuff here to present you UIPopoverController
[myPopOver release];
[navController release];

现在,在您的 PopUp 类中,在 viewDidLoad 方法中,您可以自定义 UINavigationController 导航栏。例如:

- (void)viewDidLoad 
  [super viewDidLoad];

  UIBarButtonItem *aButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(somethingSelector:)];          
  self.navigationItem.rightBarButtonItem = aButtonItem;
  [aButtonItem release];

somethingSelector 如下所示:

- (void)somethingSelector:(id)sender

   // your custom actions

编辑

或者,您可以避免使用 UINavigationController 并在 PopUp 类中创建 UIToolbar。在 UIToolbar 内,您可以附加 UIBarButtonItems。见UIToolbar Class Reference

【讨论】:

如果是我发布的使用 UIButton 的问题(已修复)。我需要添加 CGRect 并将 UIButtons 放在坐标中吗?

以上是关于UIButton UIPopUpController 以编程方式的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Swift4 会强制转换 UIButton 数组!到 [UIButton?] 类型?

UIButton:根据titleLabel Text计算UIButton的高度

我们在swiftui中作为 UIButton(Sender: UIButton) 有啥? [关闭]

UIButton的使用

如何在 UIButton 的右边缘对齐 UIButton 图像

UIButton