UIPopoverController 显示在另一个按钮上
Posted
技术标签:
【中文标题】UIPopoverController 显示在另一个按钮上【英文标题】:UIPopoverController is showing on the other button 【发布时间】:2013-08-16 12:36:04 【问题描述】:当点击 UIButton 以显示 UIPopovercontroller 时,它会显示在另一个 UIbarbuttonite 上,并且它会显示空白的黑色不透明 UIPopovercontroller。
这是我实现的代码:
- (IBAction)buttonTapped:(id)sender
UIButton *btnAction;
BookmarkViewController* bookmarkVC = [[BookmarkViewController alloc] init];
_buttonPopoverController = [[UIPopoverController alloc]
initWithContentViewController:bookmarkVC];
_buttonPopoverController.delegate = self;
CGRect popoverFrame = btnAction.frame;
[_buttonPopoverController setPopoverContentSize:CGSizeMake(320, 355) animated:NO];
//only required if using delegate methods
[_buttonPopoverController presentPopoverFromRect:popoverFrame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
【问题讨论】:
您如何将UIButton *btnAction
设置为正确的按钮?
使用storyboard连接buttonTapped
那可能是你的问题。您需要根据提供给函数的(id)sender
的某些属性来选择按钮,或者只需将发送者分配给按钮:*btnAction = sender
【参考方案1】:
UIButton *btnAction=(UIButton*) sender;
【讨论】:
【参考方案2】:你错过了 sender
到 btnAction
那是UIButton *btnAction=(UIButton *)sender;
试试这个,
- (IBAction)buttonTapped:(id)sender
UIButton *btnAction=(UIButton *)sender;
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *bookmarkVC = [storyboard instantiateViewControllerWithIdentifier:@"BookmarkViewController"];
_buttonPopoverController = [[UIPopoverController alloc]
initWithContentViewController:bookmarkVC];
_buttonPopoverController.delegate = self;
CGRect popoverFrame = btnAction.frame;
[bookmarkVC setContentSizeForViewInPopover:CGSizeMake(320, 355)];
//only required if using delegate methods
[_buttonPopoverController presentPopoverFromRect:popoverFrame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
【讨论】:
有了这个改变,它现在显示在正确的 uibutton 下,但为什么它显示为空白。它应该显示带有添加、编辑和完成按钮的表格视图。 检查更新的答案:BookmarkViewController* bookmarkVC = [[BookmarkViewController alloc]initWithNibName:@"BookmarkViewController" bundle:nil];
当点击 uibutton 以显示 uipopovercontroller 时,此更改会导致应用崩溃
书签视图控制器在情节提要中,但它是通过按钮点击操作方法附加的
检查更新的答案。并检查您的故事板名称和视图控制器是否与我给出的相同。【参考方案3】:
你的问题在这里
[_buttonPopoverController presentPopoverFromRect:popoverFrame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
presentPopoverFromRect:popoverFrame
实际上应该是弹出框的 rect 而不是 UIButton
的 btnAction 没有你还没有分配的框架,并且你在表演CGRect popoverFrame = btnAction.frame;
应该是这样的
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 300.0, 50.0) inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
希望这会有所帮助。
【讨论】:
根据the documentation:rect: The rectangle in view at which to anchor the popover window.
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 300.0, 50.0) inView:self.view allowedArrowDirections:UIPopoverArrowDirectionUp animated:YES];以上是关于UIPopoverController 显示在另一个按钮上的主要内容,如果未能解决你的问题,请参考以下文章