2016-09-01 17 views
4

ユーザーが最初にフォトアルバムにアクセスできない場合は、[キャンセル]と[設定]から選択するポップアップが表示されます。彼が設定を選択すると、設定ページに移動し、カメラとフォトライブラリを有効にすることができます。しかし、ユーザーが設定でカメラまたはフォトライブラリの切り替えをトグルすると、私のアプリは「デバッガからのメッセージ:シグナル9のために終了しました」という印字でクラッシュします。以下は私のポップアップためのコードがあるIOSの設定の変更を処理する正しい方法

@IBAction func cameraBarBtnPress(sender: AnyObject) { 

    let photoAuthStatus = PHPhotoLibrary.authorizationStatus() 

    switch photoAuthStatus { 

    case .Authorized: 
     presentFusumaCameraVC() 

    case .Denied, .Restricted : 

     showNeedPhotoAlbumAccessPopup() 

    case .NotDetermined: 
     PHPhotoLibrary.requestAuthorization({ (authStatus: PHAuthorizationStatus) in 
      switch authStatus { 
      case .Authorized: 
       self.presentFusumaCameraVC() 

      case .Denied, .Restricted : 
       self.showNeedPhotoAlbumAccessPopup() 

      case .NotDetermined: 
       print("Shouldnt get to here") 
      } 
     }) 
    } 
} 

func showNeedPhotoAlbumAccessPopup() { 
    let alertController = UIAlertController(title: "Enable Photo Album Access", message: "", preferredStyle: .Alert) 
    let cancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: nil) 
    let settingsAction = UIAlertAction(title: "Settings", style: .Default, handler: { (action: UIAlertAction) in 
     let settingsUrl = NSURL(string: UIApplicationOpenSettingsURLString) 
     if let url = settingsUrl { 
      UIApplication.sharedApplication().openURL(url) 
     } 
    }) 
    alertController.addAction(settingsAction) 
    alertController.addAction(cancelAction) 
    self.presentViewController(alertController, animated: true, completion: nil) 
} 

ユーザーが戻ってアプリに移動して、スイッチを切り替えた後の写真の選択を開始できるように、これは何を処理するための正しい方法でしょうか?

+0

PHPhotolibrary.authorizationStatus()メソッドの実装は何ですか? – dudeman

+0

私はPHPhotolibraryを実装しませんでした。 authorizationStatus()自分でアップルのPHPPhotoLibraryからです:NSObjectクラス – user172902

+0

photoAuthStatusの値は? – dudeman

答えて

関連する問題