0

私のアプリケーションには、csv ファイルのクイックルック ビューの読み込みを担当するコントローラーがあります。ファイルは正常に読み込まれ、クイックルック ビューをエラーなしでレンダリングできます。私が直面している問題は、ユーザーがクイックルック ビューを閉じることができるようになったことです。

クイックルックをレンダリングしているビューの一部として、閉じるボタンを備えたナビゲーションバーをレンダリングしようとしていました。ナビゲーション バーが表示されません。viewDidLoad の後に要素を設定しています。これが私のコントローラーのコードです。

#import "JornadaDocPreviewViewController.h"

@interface JornadaDocPreviewViewController ()

@end

@implementation JornadaDocPreviewViewController

-(id)initWidthArray:(NSArray*)array;
{
    self = [super init];

    if(self)
    {
        arrayOfDocuments = array;

    }

    return self;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.dataSource = self;

    // Which item to preview
    [self setCurrentPreviewItemIndex:0];

    self.delegate = self;
    UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:@"Close"
                                                                    style:UIBarButtonItemStylePlain
                                                                   target:self
                                                                   action:@selector(closeThis)];

    NSArray *myToolbarItems = [NSArray arrayWithObjects:closeButton, nil];
    self.toolbarItems = myToolbarItems;




}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.navigationController.toolbarHidden = NO;
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.navigationController.toolbarHidden = YES;
}

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
    return [arrayOfDocuments count];
}

/*---------------------------------------------------------------------------
 *
 *--------------------------------------------------------------------------*/
- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
    // Break the path into its components (filename and extension)
    NSArray *fileComponents = [[arrayOfDocuments objectAtIndex: index] componentsSeparatedByString:@"."];


    // Use the filename (index 0) and the extension (index 1) to get path
    NSString *path = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]];

    NSLog(@"path %@", [fileComponents objectAtIndex:0]);

    return [NSURL fileURLWithPath:[arrayOfDocuments objectAtIndex: index]];
}


@end

------ 私はこれを試しました ------ トリックをしていないようです

UIView *previewView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, self.view.frame.size.width - 20, self.view.frame.size.height - 20)];

    //[self.view addSubview:previewView];

    JornadaDocPreviewViewController *previewer = [[JornadaDocPreviewViewController alloc] initWidthArray:value];

    [previewView.window setRootViewController:previewer ];
    //[self.view bringSubviewToFront:previewView];

    [self.navigationController pushViewController:previewer animated:YES];
4

1 に答える 1

0

プレビュー コントローラー ビューを直接表示しないでください。代わりに、プレビュー コントローラーをナビゲーション コントローラー スタックにプッシュすると、ナビゲーション バーが [完了] ボタンと共に自動的に表示されます (必要に応じてデリゲートが呼び出されます)。

于 2013-08-08T13:51:42.540 に答える