2016-08-11 1 views
0

J'ai une vue de collection qui est de charger des images de la galerieComment vérifier l'autorité pour accéder aux photos?

La première fois que l'application s'exécute elle est toujours écrasé parce que l'accès n'est pas donné pour utiliser phtos .Comment vérifier l'accès dans le code ??

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    self.navigationController?.navigationBar.barTintColor = UIColor.grayColor() 
    let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil) 

    var i = 0 
    repeat 
    { 
     if (collection.count > 0) 
     { 
      if let first_Obj:AnyObject = collection.objectAtIndex(i) 
      { 
       self.assetCollection = first_Obj as! PHAssetCollection 
      } 
      i += 1 
     } 
    }while(i < collection.count) 




    // Do any additional setup after loading the view. 
} 

override func viewWillAppear(animated: Bool) 
{ 
    if let layout = self.photoAlbum!.collectionViewLayout as? UICollectionViewFlowLayout{ 
     let cellSize = layout.itemSize 

     self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height) 
    } 

    //fetch the photos from collection 
    self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil) 
    self.photoAlbum!.reloadData() 


} 

Répondre

1
if ALAssetsLibrary.authorizationStatus() == ALAuthorizationStatus.NotDetermined { 
    self.navigationController?.navigationBar.barTintColor = UIColor.grayColor() 
    let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil) 

    var i = 0 
    repeat 
    { 
     if (collection.count > 0) 
     { 
      if let first_Obj:AnyObject = collection.objectAtIndex(i) 
      { 
       self.assetCollection = first_Obj as! PHAssetCollection 
      } 
      i += 1 
     } 
    }while(i < collection.count) 




    // Do any additional setup after loading the view. 
} 

override func viewWillAppear(animated: Bool) 
{ 
    if let layout = self.photoAlbum!.collectionViewLayout as? UICollectionViewFlowLayout{ 
     let cellSize = layout.itemSize 

     self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height) 
    } 

    //fetch the photos from collection 
    self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil) 
    self.photoAlbum!.reloadData() 

    }else { 
    self.navigationController?.navigationBar.barTintColor = UIColor.grayColor() 
    let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil) 

    var i = 0 
    repeat 
    { 
     if (collection.count > 0) 
     { 
      if let first_Obj:AnyObject = collection.objectAtIndex(i) 
      { 
       self.assetCollection = first_Obj as! PHAssetCollection 
      } 
      i += 1 
     } 
    }while(i < collection.count) 




    // Do any additional setup after loading the view. 
} 

override func viewWillAppear(animated: Bool) 
{ 
    if let layout = self.photoAlbum!.collectionViewLayout as? UICollectionViewFlowLayout{ 
     let cellSize = layout.itemSize 

     self.assetThumbnailSize = CGSizeMake(cellSize.width, cellSize.height) 
    } 

    //fetch the photos from collection 
    self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil) 
    self.photoAlbum!.reloadData() 

    } 

écrire ceci dans viewWillAppear() ou viewDidLoad()

+0

votre code viewWillAppear()/viewDidLoad() doit être dans ce pour éviter l'accident – JAck

+0

comment modifier mon viewWillAppear() ou viewDidLoad () –

+0

vérifier ma réponse mise à jour vous devez faire comme ça – JAck