質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

解決済

swift DKImagePickerControllerの使い方

mars111
mars111

総合スコア17

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1回答

1評価

0クリップ

159閲覧

投稿2022/07/11 07:17

問題点

複数選択の行えるカメラロールを使用したいと思い、こちらのサイトを参考にしているのですが、このサイトに記載されている一覧のコードをどこに記述していいのかわからず、苦戦しています。
UIImagePickerと同様に記述すればいいのかと思い、以下のコードのように書いてみたのですが、Thread 5: signal SIGABRTとのエラーが出てしまいます
色々とデバックをしたところ、openImagePicker内の

swift

self.present(picker, animated: true, completion: nil)

で問題が生じているようです
よろしくお願いいたします

コード全文

swift

import UIKit import RealmSwift import DKImagePickerController class AddModuleViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet weak var countImage: UILabel! @IBOutlet weak var titleTextField: UITextField! var moduleName = "" var imageCount = 0 var imageList:[UIImage] = [] let realm = try! Realm() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func openImagePicker(_ sender: Any) { if imageList.count < imageCount{ let picker = DKImagePickerController() picker.delegate = self picker.maxSelectableCount = imageCount - imageList.count //カメラモード、写真モードの選択 picker.sourceType = .photo //キャンセルボタンの有効化 picker.showsCancelButton = true print("call") //UIのカスタマイズ picker.didSelectAssets = { (assets: [DKAsset]) in for asset in assets { asset.fetchFullScreenImage(completeBlock: { (image, info) in self.imageList.append(image!) print(image!) }) } } self.present(picker, animated: true, completion: nil) }else{ let dialog = UIAlertController(title: "画像数が上限に達しています", message: "このモジュールの最大画像枚数は\(imageCount)枚です。より多くの画像を追加したい場合は他のモジュールを選択してください。", preferredStyle: .alert) dialog.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) // 生成したダイアログを実際に表示します self.present(dialog, animated: true, completion: nil) } } @IBAction func saveAlbum(_ sender: Any) { print(imageList) } func getFileURL(fileName: String) -> URL { let docDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! return docDir.appendingPathComponent(fileName) } }

エラー

swift

2022-07-11 15:59:50.614376+0900 ARalbum[73419:11990240] [LayoutConstraints] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. ( "<NSLayoutConstraint:0x28233ead0 UILabel:0x10361f7d0.height == 50 (active)>", "<NSLayoutConstraint:0x28233e990 UILabel:0x10361f7d0.top == UITableViewCellContentView:0x10361f430.topMargin (active)>", "<NSLayoutConstraint:0x28233e940 UITableViewCellContentView:0x10361f430.bottomMargin == UILabel:0x10361f7d0.bottom (active)>", "<NSLayoutConstraint:0x28233e800 'UIView-bottomMargin-guide-constraint' V:[UILayoutGuide:0x283916840'UIViewLayoutMarginsGuide']-(11)-| (active, names: '|':UITableViewCellContentView:0x10361f430 )>", "<NSLayoutConstraint:0x28233f890 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x10361f430.height == 72.5 (active)>", "<NSLayoutConstraint:0x28233e8f0 'UIView-topMargin-guide-constraint' V:|-(11)-[UILayoutGuide:0x283916840'UIViewLayoutMarginsGuide'] (active, names: '|':UITableViewCellContentView:0x10361f430 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x28233ead0 UILabel:0x10361f7d0.height == 50 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. <UIImage:0x28321a010 anonymous {3024, 4032} renderingMode=automatic> 2022-07-11 15:59:50.700891+0900 ARalbum[73419:11990240] [LayoutConstraints] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. ( "<NSLayoutConstraint:0x28233f390 UIImageView:0x10362e000.width == 1.875*UIImageView:0x10362e000.height (active)>", "<NSLayoutConstraint:0x28233e760 UILabel:0x10362e1e0.height == 25 (active)>", "<NSLayoutConstraint:0x28233f8e0 H:[UIImageView:0x10362e000]-(0)-| (active, names: '|':UITableViewCellContentView:0x10362de60 )>", "<NSLayoutConstraint:0x28233f930 V:|-(0)-[UIImageView:0x10362e000] (active, names: '|':UITableViewCellContentView:0x10362de60 )>", "<NSLayoutConstraint:0x28233fc50 H:|-(0)-[UIImageView:0x10362e000] (active, names: '|':UITableViewCellContentView:0x10362de60 )>", "<NSLayoutConstraint:0x28233fcf0 V:[UIImageView:0x10362e000]-(5)-[UILabel:0x10362e1e0] (active)>", "<NSLayoutConstraint:0x28233fe30 UITableViewCellContentView:0x10362de60.bottomMargin == UILabel:0x10362e1e0.bottom + 5 (active)>", "<NSLayoutConstraint:0x28233bde0 'UIView-bottomMargin-guide-constraint' V:[UILayoutGuide:0x2839171e0'UIViewLayoutMarginsGuide']-(11)-| (active, names: '|':UITableViewCellContentView:0x10362de60 )>", "<NSLayoutConstraint:0x28233ba20 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x10362de60.height == 246.5 (active)>", "<NSLayoutConstraint:0x28233b9d0 'UIView-Encapsulated-Layout-Width' UITableViewCellContentView:0x10362de60.width == 375 (active)>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x28233e760 UILabel:0x10362e1e0.height == 25 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. call 2022-07-11 15:59:54.338829+0900 ARalbum[73419:11990291] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data. dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/usr/lib/libMTLCapture.dylib (lldb)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

mars111

2022/07/11 08:00

解決しました! すでにUIImagePickerが使えていたので不要かと思っていました。 ありがとうございます

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています