【问题标题】:UIButton UIPopUpController programmaticallyUIButton UIPopUpController 以编程方式
【发布时间】: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。

标签: objective-c ios uipopovercontroller uibarbuttonitem


【解决方案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 放在坐标中吗?
猜你喜欢
  • 2012-02-13
  • 2015-02-27
  • 1970-01-01
  • 2013-02-09
  • 2011-12-27
  • 2019-10-09
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多