2016-05-25 4 views
1

Ich verwende diese GitHub project's controller für die Anzeige der Fotogalerie des Benutzers innerhalb von UICollectionView. Alles ist in Ordnung, aber außer einem: Wenn ich es zum ersten Mal benutze, fragt es mich nach Berechtigungen. Ich akzeptiere es, aber danach kann ich meine Bilder nicht mehr aus der Galerie bekommen. Es zeigt nichts an.Warum Fotos aus der Galerie erscheint nicht nach den Berechtigungen geben?

Aber wenn ich meine App schließe und erneut laufe, kann sie meine Fotos aus der Galerie bekommen. Dieses Problem tritt also nur beim ersten Start auf.

Kann mir jemand helfen, wie kann ich es lösen?

UPDATE

Ich nehme an, dass diese Beobachter falsch funktioniert: So

func photoLibraryDidChange(changeInstance: PHChange) { 
    let changeDetails = changeInstance.changeDetailsForFetchResult(images) 

    self.images = changeDetails!.fetchResultAfterChanges 
    dispatch_async(dispatch_get_main_queue()) { 
     // Loop through the visible cell indices 
     let indexPaths = self.imagesCollectionView.indexPathsForVisibleItems() 
     for indexPath in indexPaths as [NSIndexPath]! { 
      if changeDetails!.changedIndexes!.containsIndex(indexPath.item) { 
       let cell = self.imagesCollectionView?.cellForItemAtIndexPath(indexPath) as! ImagesCollectionViewCell 
       cell.imageAsset = changeDetails!.fetchResultAfterChanges[indexPath.item] as? PHAsset 
      } 
     } 
    } 
} 

, gebe ich Berechtigungen, aber es nicht zeigen mir meine Fotos. Dazu muss ich meine App neu starten

Wenn Sie einen Code möchten - ich kann es teilen. Aber ich benutze den obigen GitHub-Controller, den ich oben angehängt habe.

+0

hast du es lösen? @John –

Antwort

0

Da es beim Neustart der App korrekt funktioniert, klingt es, als würden Sie wahrscheinlich nach Berechtigungen fragen, während Sie gleichzeitig die View-Controller-/Sammlungsansicht anzeigen. Das Problem besteht darin, dass die Sammlungsansicht nicht neu geladen werden kann, nachdem der Nutzer ausgewählt hat, dass er Ihrer App Zugriff auf ihre Fotos gewährt. Im Aufruf von PHPhotoLibrary.requestAuthorization müssen Sie Ihrem View-Controller/Collection-View mitteilen, dass er neu geladen werden soll, sobald er Ihre App autorisiert hat. Kleines Beispiel unten:

PHPhotoLibrary.requestAuthorization { status in 
switch status { 
case .Authorized: 
    /* RELOAD COLLECTION VIEW HERE */ 
case .Restricted: 
    <#your code#> 
case .Denied: 
    <#your code#> 
default: 
    // place for .NotDetermined - in this callback status is already determined so should never get here 
    break 
} 

}

Verwandte Themen