0

私の普遍的なアプリケーションでは、最初にマスター詳細があります。iPad では、分割ビューとして表示されるだけで、インターフェイスの向きを変更すると、自動サイズ調整が正常に機能します。しかし、iPhone では、これは私の詳細ビューでは十分に機能しません。したがって、まったく同じ機能を持つ DetailViewController に 2 つの異なるビューを用意したいのですが、実際には正しく動作させることができません。2 つのビュー コントローラーを使用しようとしましたが、実際にはうまくいきませんでした。ちなみに、ストーリーボードを使用しています。

DetailViewController に 2 つのビューを追加することで解決策を見つけたと思いました。次に、現在の向きを確認し、最近のビューを次のように設定します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    Video *currentVideo = [[self.xmlParser videos] objectAtIndex:indexPath.row];

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
        [self.detailViewController setDetailItem:currentVideo];
    else {

        if (!self.detailViewController) {

            DetailViewController *nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"];
            if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait)
                [nextController setView:nextController.portraitView];
            else
                [nextController setView:nextController.landscapeView];
            [nextController setDetailItem:currentVideo];
            [self.navigationController pushViewController:nextController animated:YES];
        }        
    }
}

これは正常に機能しますが、別の問題に直面しています。2 つのビューにはまったく同じアウトレットが含まれていますが、どちらか一方のアウトレットのみを DetailViewController クラスに接続できます。そのため、オリエンテーションの 1 つで、自分のコンテンツを適切に表示できないか、すべてを 2 回コーディングする必要があり、これはまさに避けたいことです。

この問題をどのように処理できるかについてのアイデアはありますか?

前もって感謝します

4

1 に答える 1

1

コンテナー ビュー内の 2 つのビューをストーリーボードのビュー コントローラーに追加してみてください。1 つを縦長、もう 1 つを横長にします。必要なビューに必要なすべてのコントロールを追加します。向きが変わったら、一方を非表示にして他方を表示します。

于 2012-09-13T08:54:17.963 に答える