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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Swift Playground

Swift Playgroundは、Swiftをインタラクティブに習得できるiPad向けのアプリケーション。コーディングの知識は一切必要なく、Swift Playgrounds上でプログラミングしたコードによりドローン・ロボットを自在に動かすことが可能です。

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

451閲覧

swift初級  picker.delegate.present(picker, animated: true) は駄目なの?

okud

総合スコア11

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Swift Playground

Swift Playgroundは、Swiftをインタラクティブに習得できるiPad向けのアプリケーション。コーディングの知識は一切必要なく、Swift Playgrounds上でプログラミングしたコードによりドローン・ロボットを自在に動かすことが可能です。

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2019/05/21 11:00

編集2019/05/22 02:13

前提・実現したいこと

なぜ
picker.delegate.present(picker, animated: true)
が駄目なのか教えてください!

発生している問題・エラーメッセージ

class ViewController: UIViewController, UIImagePickerControllerDelegate,UINavigationControllerDelegate {

@IBOutlet weak var imageView: UIImageView! @IBAction func launchCamara(_ sender: UIBarButtonItem) { let camera = UIImagePickerController.SourceType.camera if UIImagePickerController.isSourceTypeAvailable(camera) { let picker = UIImagePickerController() picker.sourceType = camera picker.delegate = self picker.delegate.present(picker, animated: true) } }
エラーメッセージ

Value of type '(UIImagePickerControllerDelegate & UINavigationControllerDelegate)?' has no member 'present'

該当のソースコード

picker.delegate.present(picker, animated: true)

ソースコード

試したこと

self.present(picker, animated: true)
これで解決

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nakasho_dev

2019/05/21 16:23

テンプレートに従って書こうとしているところは良いのですが、サンプルで書かれているところはちゃんと消したり、ソースコードは整形されるように```で囲むなど、見やすい質問内容にしたほうが回答が得られやすいと考えます。
fuzzball

2019/05/22 02:43

解決したのであれば質問をcloseして下さい。
okud

2019/05/22 09:07 編集

protocol LawyerLicense { func defend() } class Lawyer: LawyerLicense { func defend() { print("異議あり!") } } class Defender { var delegate:LawyerLicense? } let taro = Defender() let satoshi = Lawyer() taro.delegate = satoshi taro.delegate!.defend() 低レベルな質問ですいません。 なぜ上の場合だとtaro.delegate!.defend()でもエラーにならずにデバックエリアに異議ありと表示されるのか教えてください!
fuzzball

2019/05/22 03:02 編集

(ちゃんと見てなかったので一旦削除)
fuzzball

2019/05/22 04:17

delegateはLawyerクラスで、Lawyerクラスにdefend()が実装されているのでエラーになりません。(プロトコルは関係ないです)
guest

回答1

0

ベストアンサー

picker.delegateはUIImagePickerControllerDelegate型です。
そのため、presentというfunctionは存在しません。

実体はUIViewControllerを継承したクラスであっても、picker.delegateはUIImagePickerControllerDelegate型で扱われます。

以下のサイトでProtocolとDelegateについて学ぶと理解が深まると思われます。

投稿2019/05/21 16:22

nakasho_dev

総合スコア2655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問