0

ナビゲーション コントローラーに埋め込まれた tableViewController の内容を表示するために iPhone コードで機能するセグエがあります。

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

tvc は、navigationController に埋め込まれたストーリーボード アイテム、UITableViewController サブクラスです。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];
}

これの欠点は、目的のView Controllerに合わせたシークが必要なことです。利点は、実装とサポートが簡単で、うまく機能するポップオーバー セグエです。

于 2013-10-21T01:04:18.717 に答える