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) 有啥? [关闭]