11

mainViewControllers ビューに UISplitViewController ビューを追加しました。コードは以下のとおりです。

    documentsRootViewController = [[DocumentsRootViewController alloc] initWithStyle:UITableViewStylePlain];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:documentsRootViewController];
    documentsRootViewController.title = @"Document List";

    documentDetailView = [[DocumentsDetailView alloc] initWithNibName:@"DocumentsDetailView" bundle:nil];
    documentsRootViewController.detailViewController = documentDetailView;

    docSplitViewController = [[UISplitViewController alloc] init];
    docSplitViewController.viewControllers = [NSArray arrayWithObjects:navigationController, documentDetailView, nil];
    docSplitViewController.delegate = documentDetailView;

    CGRect splitViewFrame = CGRectMake(0, 0, cetralArea.frame.size.width, cetralArea.frame.size.height);         
    docSplitViewController.view.frame = splitViewFrame;
    [cetralArea addSubview:docSplitViewController.view];

今私が欲しいのは、UISplitViewController の DetailView から ViewController を提示することです。私は DetailViewControllers の中で以下のようにしようとしています Click Me! ボタンをクリックします。

ここに画像の説明を入力

- (IBAction) buttonClicked:(id)sender
{
    NSString *phrase = nil; // Document password (for unlocking most encrypted PDF files)    
    NSArray *pdfs = [[NSBundle mainBundle] pathsForResourcesOfType:@"pdf" inDirectory:nil];    
    NSString *filePath = [pdfs lastObject]; assert(filePath != nil); // Path to last PDF file

    ReaderDocument *readerDocument = [ReaderDocument withDocumentFilePath:filePath password:phrase];    
    if (readerDocument != nil) // Must have a valid ReaderDocument object in order to proceed with things
    {
        ReaderViewController *rViewController = [[ReaderViewController alloc] initWithReaderDocument:readerDocument];        
        rViewController.delegate = self; // Set the ReaderViewController delegate to self              

        [self presentModalViewController:rViewController animated:NO];        
    } 
}

しかし、これは厄介なプレゼンテーションになります

ここに画像の説明を入力

ここで何が問題なのか誰でも提案できますか、事前に感謝します..

4

4 に答える 4

2

あなたのスクリーンショットでは、分割ビュー コントローラーの左側と右側 (詳細ビュー) がどこにあるのかわかりません。ビューの背景色を変更して位置を区別します。あなたはそれらに問題を抱えているようです。

とにかく、Detail の代わりに splitView からモーダル ビュー コントローラーを提示してみることができます。

[splitViewController presentModalViewController:rViewController animated:NO];
于 2012-04-24T13:46:06.430 に答える
2

ここでの秘訣は、モーダルに表示したいView ControllerのmodalPresentationStyle(およびオプションでmodalTransitionStyle)を変更することだと思います:

    ReaderViewController *rViewController = [[ReaderViewController alloc] initWithReaderDocument:readerDocument];        
    rViewController.delegate = self; // Set the ReaderViewController delegate to self              

    rViewController.modalPresentationStyle = UIModalPresentationFullScreen;
    rViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;     
    [self presentViewController:rViewController animated:YES completion:nil];
于 2012-04-24T14:48:44.870 に答える
1

私は同じ問題を抱えていました(iOS 5.1で)。modalPresentationStyle を UIModalPresentationPageSheet に設定すると、期待どおりに動作するはずです。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    rViewController.modalPresentationStyle = UIModalPresentationPageSheet;
    rViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
}
于 2012-05-03T15:53:05.937 に答える
0

私が見つけたのは、次のような分割ビューサイズを指定していることですcetralArea.frame.size.width

その代わりに、Splitview に与えたいサイズを直接与えるだけです。

それがあなたのために働くことを願っています。

于 2012-04-25T06:17:45.963 に答える