弹出框控制器无法正确显示视图
Posted
技术标签:
【中文标题】弹出框控制器无法正确显示视图【英文标题】:Popover Controller doesn't show view correctly 【发布时间】:2016-06-06 21:28:05 【问题描述】:我有一个ViewController
,当按下右侧的barButton
时,会显示一个弹出视图。弹出视图是一个表格视图控制器,
问题是当弹出框显示时,它只显示一个视图(不是表格视图)。
但是当popover被关闭时,你可以看到它在消失之前很快就翻转到了tableview。
为什么会这样?
更新:根据@sticker 在末尾添加popController.sourceView = sender;
:
- (IBAction)pressedButton:(id)sender
NSLog(@"Pressed Button");
// grab the view controller we want to show
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Pop"];
// present the controller
// on iPad, this will be a Popover
// on iPhone, this will be an action sheet
controller.modalPresentationStyle = UIModalPresentationPopover;
[self presentViewController:controller animated:YES completion:nil];
// configure the Popover presentation controller
UIPopoverPresentationController *popController = [controller popoverPresentationController];
popController.permittedArrowDirections = UIPopoverArrowDirectionAny;
popController.barButtonItem = self.barbutton;
popController.delegate = self;
// Added per @sticker
popController.sourceView = sender;
还确定PopTableViewController
有<UITableViewDelegate, UITableViewDataSource>
。
在弹出框消失之前,我仍然没有显示任何 tableview:
(以下是弹出框被解除并动画消失后会发生的情况)
【问题讨论】:
你需要为 popController 设置 sourceView 并且不要忘记为你的 table view 设置 datasource 和 delegate。 @sticker 感谢您的回复!所以在我的ViewController
pressedButton:
的末尾我添加了popController.sourceView = sender;
,然后我转到PopTableViewController
并确保它有<UITableViewDelegate, UITableViewDataSource>
。我得到了正确的表格视图行,但它仍然没有在表格视图中显示它(直到我关闭弹出框,然后它仍然在被关闭时快速显示表格视图)。我错过了你建议的任何部分,还是你知道我还需要什么?谢谢!
@sticker 你知道吗,除非你有任何其他想法,否则它可能只是模拟器中的一个错误***.com/a/34108147/4205674
否则,如果您想添加您的评论作为答案,那么我可以标记为已解决
哦,我没有看到像一、二、三这样的行数据,所以我认为您的问题是设置了错误的 tableView。很高兴看到它运行良好。
【参考方案1】:
我只是试试这个,它工作正常 希望对你有帮助
self.tbVC.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popOverVC = [self.tbVC popoverPresentationController];
popOverVC.barButtonItem = sender;
popOverVC.permittedArrowDirections = UIPopoverArrowDirectionAny;
[self presentViewController:_tbVC animated:YES completion:nil];
【讨论】:
感谢您的帮助!以上是关于弹出框控制器无法正确显示视图的主要内容,如果未能解决你的问题,请参考以下文章
在显示将 isModalInPresentation 设置为 true 的页面后,无法正常关闭弹出框