2016-08-11 8 views
0

私はギャラリーから画像をロードするコレクションビューを持っています写真にアクセスする権限を確認する方法は?

初めてアプリケーションを実行すると、アクセスがphtosを使用するために与えられていないため常にクラッシュします。このviewWillAppear()メソッドまたはviewDidLoad(中

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() 


} 

答えて

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() 

    } 

書き込み)

+0

あなたのviewWillAppear()/のviewDidLoad()のコードは、私のviewWillAppearを(変更する方法クラッシュ – JAck

+0

を防ぐために、このにする必要があります)またはのviewDidLoad( ) –

+0

私の更新された答えを確認するには、このようにする必要があります – JAck

関連する問題