0

我有一个适用于 iPhone 代码的 segue,用于呈现嵌入在导航控制器中的 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?

4

1 回答 1

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];
}

这样做的缺点是它需要一个为目标视图控制器定制的序列。好处是易于实施和支持,功能良好的弹出框segue。

于 2013-10-21T01:04:18.717 回答