景观中的Popover菜单占据整个屏幕

时间:2016-06-14 11:49:47

标签: ios objective-c

我使用以下代码创建一个popover。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"popover"]) {
        self.popoverTvc = [segue destinationViewController];
        self.popoverTvc.popoverPresentationController.delegate = self;
    }
}

当用户点击导航栏中的按钮时,将触发上述popover样式,并且生成的视图控制器已获得tableview。

问题是,

在纵向模式下,表格视图的大小取决于可用内容的大小。但是当我将视图从横向更改为纵向时,tableview包含可见的空单元格,因此这些空单元格阻挡了ui。为什么会这样?我希望tableview即使在横向模式下也不会阻挡整个屏幕。

我在视图中使用以下代码执行load方法来调整tableview的大小

if (self.tableView && self.presentingViewController) {
    self.preferredContentSize = [self.tableView sizeThatFits:self.presentingViewController.view.bounds.size];
}

1 个答案:

答案 0 :(得分:1)

而不是size of table view is as per the size of the contents available.以编程方式给出弹出窗口的大小。

请跟随:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    NSString *identifier = segue.identifier;
    if ([identifier isEqualToString:@"popover"]) {

        UIViewController *dvc = segue.destinationViewController;
        dvc.preferredContentSize = CGSizeMake(180,128);


        UIPopoverPresentationController *ppc = dvc.popoverPresentationController;
        if (ppc) {
            ppc.delegate = self;
        }
    }

并在上面的步骤中添加以下内容:

   - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {

    return UIModalPresentationNone;
}
相关问题