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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

195閲覧

【swift初心者】宣言について

Sue1215

総合スコア12

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2018/04/12 07:06

編集2018/04/12 08:02

swift初心者です。

現在、画面のimageViewをタップするとカメラが起動し写真を取り、ボタンを押すと先程の画面に戻り、imageViewには取った写真が映るようにしたいと思っています。
var aaa = aPicture.imageというのが撮影した画像の取得のコードだとしてAViewControlerに書いたとします。
前の画面のimageViewに写真を渡したいのでBViewControllerにimageView.image = aaaと書くとエラーになります。(Use of unresolved identifier 'aaa')

このように違うViewControllerで宣言したものは違うViewControllerではつかえないのでしょうか。

またBでこのようにしてカメラを起動しています。
/// カメラ起動
private func exeStartCamera() {
LR.log(.info, className, .start, msg: "")

if !isCameraOn { exeSetupCamera() isCameraOn = true } else { ivLicense.image = nil let setting = AVCapturePhotoSettings() setting.flashMode = .auto setting.isAutoStillImageStabilizationEnabled = true setting.isHighResolutionPhotoEnabled = false myImageOutput?.capturePhoto(with: setting, delegate: self) isCameraOn = false }

よろしくお願いします。

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

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

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

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

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

koogawa

2018/04/12 07:21

もう少し AViewControler と BViewControler のコードがわからないと回答しにくいと思います。
fuzzball

2018/04/12 07:22

B → Aはどのようにして遷移していますか?
Sue1215

2018/04/12 08:03

追加し、カメラ起動のコードを載せました。
newmt

2018/04/12 22:14

変数aaaはAViewControlerのクラス変数でしょうか?そうであるならば異なるBViewControllerでは使えないと思います。やりたいこととしてはAViewControllerでカメラ撮影で取得した画像をBViewControllerでも表示したいということでしょうか?(AViewControllerからBViewControllerへ値を渡したい?)
Sue1215

2018/04/12 23:26

その通りです。
newmt

2018/04/12 23:35

fuzzballさんのご質問にもありますが、B → Aはどのようにして遷移していますか?
Sue1215

2018/04/12 23:55

コードにもあるようにカメラを起動してなので遷移とかは特に無いと思います、、
koogawa

2018/04/13 00:06

そうではなく、カメラを起動したBからAにどのように遷移していますか?という質問だと思います。
koogawa

2018/04/13 00:07

ご自身で「ボタンを押すと先程の画面に戻り」と仰っているので、画面遷移はしていますよね?
Sue1215

2018/04/13 00:08

popで戻っている形です。
guest

回答1

0

ベストアンサー

「このように違うViewControllerで宣言したものは違うViewControllerではつかえないのでしょうか。」
最初の質問内容の回答としては変数aaaはAViewControlerのクラス変数なので異なるBViewControllerでは使えないと思います。

また「質問への追記・修正の依頼」の内容から考えますと、画面遷移をされていないのでしたらカメラ撮影から戻ってきた際にdidFinishPickingMediaWithInfoで値を設定すれば良いのかと思うのですが、やりたいことと異なっていますでしょうか?

参考記事:
https://i-app-tec.com/ios/camera.html

投稿2018/04/13 00:08

newmt

総合スコア1277

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

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

Sue1215

2018/04/13 00:23

UIImagePickerControllerを使わずにカメラを起動しています、、
Sue1215

2018/04/13 00:30

もう少し詳しく教えていただけますでしょうか、、
newmt

2018/04/13 00:32

AVCapturePhotoOutputの方でしたか、失礼しました。 BViewController にUIImageを保持する変数を設定し、popで戻って来る際に取得したUIImageを設定するという方法はいかがでしょうか?
Sue1215

2018/04/13 00:35

すみません。UIImagePickerControllerを使用しています。上のコメントは削除依頼しております。 その方法を試してみたいです。しかし詳しくどうしたらいいのかわかりません、、
newmt

2018/04/13 00:36

UIImagePickerControllerを使用する場合ですと、カメラでの撮影が完了した(決定した)際にUIImagePickerControllerDelegateのメソッドの中のdidFinishPickingMediaWithInfoが呼ばれますので、そこれUIImageを作成し、UIImageViewに設定できる、ということです。詳しくは参考記事のサイトをご参照ください。
Sue1215

2018/04/13 00:37

ちなみにimageが一時保存できるよう、UserDefaultsも設定してみましたが、必要でしょうか? /// image型拡張保存 func setImageView(forKey key: StringKey) { let key = namespaced(key) UserDefaults.standard.set(true, forKey: key) UserDefaults.standard.object(forKey: key) }
Sue1215

2018/04/13 00:41

参考サイトの//写真を保存というところからということでしょうか? あと、BVCにあるimageViewでの処理はAVCで書くということでしょうか、、?
newmt

2018/04/13 00:56

「ちなみにimageが一時保存できるよう、UserDefaultsも設定してみましたが、必要でしょうか?」 例えば、アプリが一度終了して再起動したあとも再度表示したい(けど、永続的に保存する必要はない)などがあるならば必要だとは思います。 「参考サイトの//写真を保存というところからということでしょうか?」 // 撮影が完了時した時に呼ばれるのところでpickedImageがUIImageになるのでそれをImageViewに設定すればよいのかなと思います。 「BVCにあるimageViewでの処理はAVCで書くということでしょうか」 それで良いと思います。AVC内で全て完結できるようになるので、BVCは不要になるはずです。
Sue1215

2018/04/13 01:27

わかりやすくありがとうございます。 なんとなくイメージが出来てきました。 ただ問題があって、厳密にはAVCがカメラを起動したときのVC(カメラビュー、カメラのボタンやシャッターを切るなど)で、BVCがその前の画面のVC(情報のまとめがある為、そのひとつとしてimageViewがある)です。調べたところ、UIImagePickerControllerはBVCのほうに書かれていてAVCには書かれていないのですが、どうしたらいいでしょうか、、?
newmt

2018/04/13 02:04

参考記事を元に考えると、BVCで行なっていたUIImagePickerControllerの処理は全てAVCで行われるために不要になります。 「BVCがその前の画面のVC(情報のまとめがある為、そのひとつとしてimageViewがある)です。」 最終的にカメラの画像を表示したいのはBVCですか?だとしましたら、私が勘違いをしていて逆にAVCが不要になり、BVCの中で参考記事の処理を追加していけば良いのかと思います。 仮にAVCが必要な理由がある場合、上記にご記載のようにUserDeafultsで画像を保存しているのでしたらそこからデータを取得してBVCのimageViewに設定できると思います。
Sue1215

2018/04/13 02:13

なるほど。わかりました。 UserDeafultsについて詳しく調べてみます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問