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

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

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

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Xcode

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

Swift

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

Swift 2

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

Q&A

0回答

1983閲覧

PickerTextFieldで選択された文字によって違うアクションを実行したい

natsusoranosita

総合スコア18

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Xcode

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

Swift

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

Swift 2

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

0グッド

0クリップ

投稿2017/04/27 12:20

編集2017/04/28 01:18

###前提・実現したいこと
簡単な計算アプリで、textFieldをタップすると選択肢が表示され、選択された文字列によって違うアクション・計算を行いたかったので下記のように記入し、xcode場でも特にエラーメッセージは表示されなかったのですが、ビルドした際、選択しても計算結果が表示されませんでした。
下記の記述の仕方に間違いはありますか?

###該当のソースコード

var a = Double() var b = Double() var price = Double() @IBAction func koutiku(_ sender: PickerTextField) { if koutikuTextField.pickerDataArray == ["新規構築"]{ a = a + 10 } else if koutikuTextField.pickerDataArray == ["再構築"]{ a = a + 12 } } @IBAction func nanido(_ sender: PickerTextField) { if nanidoTextField.pickerDataArray == ["難しい"]{ b = b + 11 } if nanidoTextField.pickerDataArray == ["普通"]{ b = b + 13 } else if nanidoTextField.pickerDataArray == ["易しい"]{ b = b + 15 } }

###Pickerのコード

import Foundation import UIKit @objc protocol PickerTextFieldDelegate: class { @objc optional func pushDoneButton(pickerTextField: PickerTextField, text: String) @objc optional func pushCancelButton(pickerTextField: PickerTextField) } class PickerTextField: UITextField, UIPickerViewDelegate, UIPickerViewDataSource { weak var pickerTextFieldDelegate: PickerTextFieldDelegate? private let pickerView = UIPickerView() private let toolbarHeight: CGFloat = 44 var pickerDataArray = [String]() { didSet { if let selectText = pickerDataArray.first { self.selectText = selectText } } } private var selectText: String = "" var defaultText: String! { get { return self.text } set { if let selectIndex = pickerDataArray.index(of: newValue) { pickerView.selectRow(selectIndex, inComponent: 0, animated: false) } self.text = newValue } } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.tintColor = UIColor.clear pickerView.delegate = self pickerView.dataSource = self } // 入力カーソル非表示 override func caretRect(for position: UITextPosition) -> CGRect { return CGRect.zero } // 範囲選択カーソル非表示 override func selectionRects(for range: UITextRange) -> [Any] { return [] } // コピー・ペースト・選択等のメニュー非表示 override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { return false } override var inputAccessoryView: UIView? { get { let toolBar = UIToolbar() toolBar.barStyle = UIBarStyle.default toolBar.isTranslucent = true toolBar.tintColor = UIColor.black let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(self.pushDoneButton)) let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.pushCancelButton)) let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil) toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) toolBar.isUserInteractionEnabled = true toolBar.sizeToFit() return toolBar } set {} } override var inputView: UIView? { get { (self.value(forKeyPath: "textInputTraits") as AnyObject).setValue(UIColor.clear, forKey: "insertionPointColor") self.tintColor = UIColor.clear pickerView.frame = CGRect(x: 0, y: toolbarHeight, width: UIScreen.main.bounds.size.width, height: pickerView.bounds.size.height) pickerView.backgroundColor = UIColor.white return pickerView } set {} } // Done @objc private func pushDoneButton() { self.text = selectText pickerTextFieldDelegate?.pushDoneButton?(pickerTextField: self, text: selectText) resignFirstResponder() } // Cancel @objc private func pushCancelButton() { pickerTextFieldDelegate?.pushCancelButton?(pickerTextField: self) resignFirstResponder() } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return pickerDataArray[row] } func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return pickerDataArray.count } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { selectText = pickerDataArray[row] } }

###試したこと
遷移画面後での計算結果を表示する仕様だったので、もしや計算はできているけど送る方法に間違いがあるのかと思い、同じ画面にラベルを置いてデータを受け取るようにしたのですがうまく行きませんでした。

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

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

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

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

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

natsusoranosita

2017/04/28 01:17

実行というのは文字が表示されているかという事でしょうか?おそらく違う意味かと思うのですが、その意味ならば、文字はしっかりと表示できています。Pickerのコードを追加で載せさせていただきました。お手数ですが確認のほどよろしくお願いします。
fuzzball

2017/04/28 01:36

実行というのは、呼び出されているか?という意味です。PickerTextFieldの質問にも回答をお願いします。
fuzzball

2017/04/28 01:41 編集

PickerTextFieldは自作ってことですか?
natsusoranosita

2017/04/28 01:47

お返事ありがとうございます!授業が始まってしまうので、90分後にまとめてお返事させていただきます。お時間取らせてしまい申し訳有りませんが、引き続きよろしくお願いします。
fuzzball

2017/04/28 01:57

どうやってPickerTextFieldを生成しているかも書いて下さい。
natsusoranosita

2017/04/28 10:30

Pickerは以前テラテイルで質問した際に回答いただいたものを使わせていただいています。自分の過去の質問の解答欄に残っています!先ほど、if文の中に簡単な動作を記入したのですが動かなかったので、呼び出せていないようでした。
fuzzball

2017/04/28 10:46

あなたの過去の質問を探す気はありませんし、こちらの質問にも答えていただけないようですので、これにて失礼します。以前回答してくれた親切な人がまた回答してくれるでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問