Segue在iPad popover中呈现UITableViewController和NavigationController的内容

时间:2013-09-11 12:52:19

标签: uinavigationcontroller storyboard uitableview segue

我有一个适用于iPhone代码的segue,用于显示嵌入在Navigation控制器中的tableViewController的内容。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UINavigationController *nc = (UINavigationController *)segue.destinationViewController;
    tvc = (MyTableViewController *)[nc.viewControllers lastObject];
    tvc.managedObjectContext = managedObjectContext;
}

tvc是一个故事板项,UITableViewController子类,嵌入在navigationController中。我试图找到在iPad上使用相同设置的最简单方法,但是使用导航控制器在弹出框中显示内容,而不是像现在一样呈现全屏。另外,我需要在不使用此设置的情况下创建新的viewController吗?

1 个答案:

答案 0 :(得分:0)

我创建了一个自定义的UIStoryboardPopoverSegue,其中包含以下执行代码:

- (void)perform
{
    UITableViewController *src = (UITableViewController *) self.sourceViewController;
    MyController *dst = (MyController *) self.destinationViewController;

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:dst];


    UITableViewCell *cell = [src.tableView cellForRowAtIndexPath:[src.tableView indexPathForSelectedRow]];

    UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:navigationController];

    dst.popoverController = pop;

    CGSize size = CGSizeMake(475, src.view.frame.size.height);
    pop.popoverContentSize = size;


    [pop presentPopoverFromRect:cell.frame
                         inView:src.tableView
       permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown
                       animated:YES];
}

这样做的缺点是它需要一个自定义到目标视图控制器的seque。好处是易于实施和支持,运作良好的popover segue。