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

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

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

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

Xcode

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

Swift

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

Q&A

解決済

1回答

1747閲覧

UITabBarの各画面の処理をどこに書けば良いのかわからない

退会済みユーザー

退会済みユーザー

総合スコア0

iOS

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

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/07/15 16:30

イメージ説明

swift3

1import UIKit 2 3class ViewController: UIViewController, UITabBarDelegate { 4 5 @IBOutlet weak var testTabBar: UITabBar! 6 @IBOutlet weak var testView1: UIView! 7 @IBOutlet weak var testView2: UIView! 8 @IBOutlet weak var testView3: UIView! 9 @IBOutlet weak var testView4: UIView! 10 11 //最初からあるメソッド 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 15 //カメラ画面のみ表示にする。 16 testView1.isHidden = false 17 testView2.isHidden = true 18 testView3.isHidden = true 19 testView4.isHidden = true 20 //デリゲート先を自分に設定する。 21 testTabBar.delegate = self 22 } 23 24 25 26 //ボタン押下時の呼び出しメソッド 27 func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem){ 28 switch item.tag { 29 case 1: 30 //カメラ画面を表示する。 31 testView1.isHidden = false 32 testView2.isHidden = true 33 testView3.isHidden = true 34 testView4.isHidden = true 35 case 2: 36 //今日の記録画面を表示する。 37 testView1.isHidden = true 38 testView2.isHidden = false 39 testView3.isHidden = true 40 testView4.isHidden = true 41 case 3: 42 //過去の記録画面を表示する。 43 testView1.isHidden = true 44 testView2.isHidden = true 45 testView3.isHidden = false 46 testView4.isHidden = true 47 case 4: 48 //変更画面を表示する。 49 testView1.isHidden = true 50 testView2.isHidden = true 51 testView3.isHidden = true 52 testView4.isHidden = false 53 default: 54 return 55 } 56 } 57 58} 59

このコードに次のコードを入れてtestView1(オレンジのページ)だけに反映させたいのですがやり方がわかりません。誰かご教授ください

swift3

1// 2// QRScannerController.swift 3// QRCodeReader 4// 5// Created by Simon Ng on 13/10/2016. 6// Copyright © 2016 AppCoda. All rights reserved. 7// 8import UIKit 9import AVFoundation 10 11class QRScannerController: UIViewController, AVCaptureMetadataOutputObjectsDelegate { 12 13 @IBOutlet var messageLabel:UILabel! 14 15 var captureSession:AVCaptureSession? 16 var videoPreviewLayer:AVCaptureVideoPreviewLayer? 17 var qrCodeFrameView:UIView? 18 19 let supportedCodeTypes = [AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeEAN13Code] 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 24 // AVCaptureDeviceクラスのインスタンスを取得してデバイスオブジェクトを初期化し、ビデオをメディアタイプパラメータとして提供します 25 let captureDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) 26 27 do { 28 //以前のデバイスオブジェクトを使用してAVCaptureDeviceInputクラスのインスタンスを取得します。 29 let input = try AVCaptureDeviceInput(device: captureDevice) 30 31 // captureSessionオブジェクトを初期化する. 32 captureSession = AVCaptureSession() 33 34 //キャプチャセッションで入力デバイスを設定します。 35 captureSession?.addInput(input) 36 37 // AVCaptureMetadataOutputオブジェクトを初期化し、キ​​ャプチャセッションの出力デバイスとして設定します。 38 let captureMetadataOutput = AVCaptureMetadataOutput() 39 captureSession?.addOutput(captureMetadataOutput) 40 41 //デリゲートを設定し、デフォルトのディスパッチキューを使用してコールバックを実行する 42 captureMetadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main) 43 captureMetadataOutput.metadataObjectTypes = supportedCodeTypes 44 45 //ビデオプレビューレイヤを初期化し、viewPreviewビューのレイヤにサブレイヤとして追加します。 46 videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 47 videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill 48 videoPreviewLayer?.frame = view.layer.bounds 49 view.layer.addSublayer(videoPreviewLayer!) 50 51 //ビデオキャプチャを開始します。 52 captureSession?.startRunning() 53 54 //メッセージラベルとトップバーを前面に移動する 55 view.bringSubview(toFront: messageLabel) 56 57 // QRコードフレームを初期化してQRコードを強調表示する 58 qrCodeFrameView = UIView() 59 60 if let qrCodeFrameView = qrCodeFrameView { 61 qrCodeFrameView.layer.borderColor = UIColor.green.cgColor 62 qrCodeFrameView.layer.borderWidth = 2 63 view.addSubview(qrCodeFrameView) 64 view.bringSubview(toFront: qrCodeFrameView) 65 } 66 67 } catch { 68 //何らかのエラーが発生した場合は、単純に出力して、それ以上は続行しないでください。 69 print(error) 70 return 71 } 72 } 73 74 override func didReceiveMemoryWarning() { 75 super.didReceiveMemoryWarning() 76 //再作成可能なリソースを破棄します 77 } 78 79 80 // MARK: - AVCaptureMetadataOutputObjectsDelegate Methods 81 82 func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { 83 84 // metadataObjects配列がnilでなく、少なくとも1つのオブジェクトを含んでいるかどうかを確認します。 85 if metadataObjects == nil || metadataObjects.count == 0 { 86 qrCodeFrameView?.frame = CGRect.zero 87 messageLabel.text = "No QR/barcode is detected" 88 return 89 } 90 91 //メタデータオブジェクトを取得します。 92 let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject 93 94 if supportedCodeTypes.contains(metadataObj.type) { 95 //見つかったメタデータがQRコードメタデータと等しい場合は、ステータスラベルのテキストを更新し、境界を設定します 96 let barCodeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObj) 97 qrCodeFrameView?.frame = barCodeObject!.bounds 98 99 if metadataObj.stringValue != nil { 100 messageLabel.text = metadataObj.stringValue 101 } 102 } 103 } 104 105} 106

上のコードはバーコードを読み取るものです

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

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

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

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

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

guest

回答1

0

ベストアンサー

新規に Tabbed Application の雛形から作成し直してみることをおすすめします。
タブごとの処理の記述がわかると思います。
イメージ説明

投稿2017/07/15 23:06

ykws

総合スコア1236

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

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

退会済みユーザー

退会済みユーザー

2017/07/16 04:56

わかりました、ありがとうございます。やってみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問