我有一个适用于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吗?
答案 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。