从模态呈现的视图控制器内部呈现 UIPopoverController

发布于 2024-12-18 18:42:29 字数 1248 浏览 3 评论 0原文

是否不可能从呈现为 UIModalPresentationFormsheet 的视图控制器呈现弹出窗口控制器?或者我错过了什么?

此代码在非模态视图控制器上运行良好,并正确显示弹出窗口。(WEPopoverController 是来自此处<的自定义实现/a>。)

    GenericDataTableViewController *genericDataController = [[GenericDataTableViewController alloc] initWithNibName:@"GenericDataTableViewController" bundle:[NSBundle mainBundle]];

    genericDataController.dataSource = [NSMutableArray arrayWithObjects:@"asli", nil];
    genericDataController.delegate = self;
    genericDataController.contentSizeForViewInPopover = CGSizeMake(300, 46 * [genericDataController.dataSource count]);

    self.popoverController = [[[WEPopoverController alloc] initWithContentViewController:genericDataController] autorelease];
    self.popoverController.delegate = self;
    [self.popoverController presentPopoverFromRect:((UIButton *)sender).frame
                                            inView:self.view
                          permittedArrowDirections:UIPopoverArrowDirectionUp
                                          animated:YES];
    [genericDataController release];

但是当我将其放入模态视图控制器中时,它会在模态控制器下方呈现弹出窗口,即在呈现模态控制器的视图控制器上。所以用户看不到它。

我该如何解决这个问题?

Is it impossible to present a popover controller from a view controller that's presented as UIModalPresentationFormsheet? or am I missing something?

This code works fine on a non-modal view controller, and displays the popover correctly.(WEPopoverController is a custom implementation from here.)

    GenericDataTableViewController *genericDataController = [[GenericDataTableViewController alloc] initWithNibName:@"GenericDataTableViewController" bundle:[NSBundle mainBundle]];

    genericDataController.dataSource = [NSMutableArray arrayWithObjects:@"asli", nil];
    genericDataController.delegate = self;
    genericDataController.contentSizeForViewInPopover = CGSizeMake(300, 46 * [genericDataController.dataSource count]);

    self.popoverController = [[[WEPopoverController alloc] initWithContentViewController:genericDataController] autorelease];
    self.popoverController.delegate = self;
    [self.popoverController presentPopoverFromRect:((UIButton *)sender).frame
                                            inView:self.view
                          permittedArrowDirections:UIPopoverArrowDirectionUp
                                          animated:YES];
    [genericDataController release];

But when I put this inside the modal view controller, this presents the popover below the modal controller, i.e. on the view controller that presents the modal one. So it cannot be seen by the user.

How can I solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

末が日狂欢 2024-12-25 18:42:29

答案在问题的评论中进行了解释,但我在这里总结一下,以便进行更清晰的问答。

如果您的弹出窗口控制器是 UIPopoverController,则从表单内部显示弹出窗口控制器没有任何限制。我的问题是由于 WEPopoverController 的实现造成的。

因此,牺牲视觉体验并继续使用旧的 UIPopoverController

The answer is explained in the comments of the question but I'm summarizing it here for a cleaner Q&A.

There aren't any restrictions about displaying a popover controller from inside a form sheet, if your popover controller is UIPopoverController. My problem was due to the implementation of WEPopoverController.

So, sacrifice the visual experience and continue with the good old UIPopoverController.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文