Domanda

Ho un'app Master-Detail in cui il master mostra un elenco di documenti e il dettaglio mostra un'anteprima di questi documenti.

Nello Storyboard ho disegnato un UIView chiamato VistaPreview . L'ho dichiarato in .h:

@property (weak, nonatomic) IBOutlet UIView *vistaPreview;
.

Ho anche dichiarato anche la variabile QLPreviewController* previewVC; da utilizzare in .M

In .m, ho un metodo che viene chiamato quando l'utente tocca un documento nell'elenco.Il metodo Aggiungi un QLPreviewController nella vista VistaPreview:

    previewVC = [[QLPreviewController alloc] init];
    previewVC.dataSource = self;
    previewVC.delegate = self;
    [self addChildViewController:previewVC];
    CGFloat w= self.vistaPreview.frame.size.width;
    CGFloat h= self.vistaPreview.frame.size.height;
    previewVC.view.frame = CGRectMake(0, 0,w, h);
    [self.vistaPreview addSubview:previewVC.view];
    [previewVC didMoveToParentViewController:self];
.

La cosa è, dopo diverse volte facendo clic su alcuni documenti nell'elenco, ottengo il prossimo errore:

Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed.
.

L'app non si blocca, ricevo solo un messaggio nella vista QLPreviewController con il nome del documento (e non il contenuto).Quando faccio clic su un altro documento nell'elenco, l'app ritorna per funzionare raffinando il contenuto dei documenti.

Qualche idea di come risolverlo?

Grazie in anticipo!

È stato utile?

Soluzione

Il problema è stato la quantità di bambini QLPreviewController. Quindi, cerco i bambini Qlpreviewcontroller e rimuovili dal ParentViewController.

NSArray *children = [self childViewControllers];
for (int i = 0; i<[children count]; i++) {
    NSString *classString = [NSString stringWithFormat:@"%@", [[children objectAtIndex:i] class]];
    if ([classString isEqualToString:@"QLPreviewController"]) {
        [[children objectAtIndex:i] removeFromParentViewController];
    }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top