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

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

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

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

Q&A

解決済

1回答

2547閲覧

Swiftで電卓アプリ開発

Yuiki

総合スコア11

Swift

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

0グッド

0クリップ

投稿2015/06/03 03:55

編集2015/06/04 05:09

現在、電卓のアプリを開発しています。が、エラーが発生して進めなくなってしまったため、質問させていただきます。

![イメージ説明]WIDTH:200
実装したい内容は、このボタンをタップしたときに、どのボタンがタップされたのかを表示するということです。

エラーは以下のような内容です。
[Calculator.ViewController buttonTapped:]: unrecognized selector sent to instance 0x7988fea0
buttonTappedメソッドが認識できないと言われてしまっています。
誤字脱字は確認したので、そちらは問題ないように思われます。認識できないのか、わかりません、、、。

ソースコード以下になります。

// // ViewController.swift // Calculator // import UIKit class ViewController: UIViewController { //計算結果を表示するラベルを宣言 var resultLabel = UILabel() let xButtonCount = 4 //一行に配置するボタンの数 let yButtonCount = 4 //画面の横幅サイズを格納するメンバ変数 let screenWidth:Double = Double(UIScreen.mainScreen().bounds.size.width) //画面の縦 let screenHeight:Double = Double(UIScreen.mainScreen().bounds.size.height) //ボタン間の余白 let buttonMargin = 10.0 //計算結果表示 var resultArea = 0.0 override func viewDidLoad() { super.viewDidLoad() //画面全体の縦幅に応じて計算結果表示エリアの縦幅を決定 switch screenHeight{ case 480: resultArea = 200.0 case 568: resultArea = 250.0 case 667: resultArea = 300.0 case 736: resultArea = 350.0 default: resultArea = 0.0 } //計算結果のラベル resultLabel.frame = CGRect(x:10, y:30, width:screenWidth-20, height:resultArea-30) let buttonLabels = [ "7","8","9","×", "4","5","6","-", "1","2","3","+", "0","C","÷","=" ] for var y=0; y<yButtonCount; y++ { for var x=0; x<xButtonCount; x++ { //計算機のボタン作成 var button = UIButton() //ボタンの横幅 var buttonWidth = (screenWidth - (buttonMargin * (Double(xButtonCount)+1)))/Double(xButtonCount) //ボタンの縦幅 var buttonHeight = (screenHeight - resultArea - ((buttonMargin*Double(yButtonCount)+1)))/Double(yButtonCount) //ボタンのx座標 var buttonPositionX = (screenWidth - buttonMargin) / Double(xButtonCount) * Double(x) + buttonMargin //ボタンのy座標 var buttonPositionY = (screenHeight - resultArea - buttonMargin) / Double(yButtonCount) * Double(y) + buttonMargin + resultArea //ボタンの配置、サイズ button.frame = CGRect(x:buttonPositionX, y:buttonPositionY, width:buttonWidth, height:buttonHeight) //背景 button.backgroundColor = UIColor.greenColor() //ボタンのラベルタイトル var buttonNumber = y * xButtonCount + x //ボタンのラベルタイトルを取り出すインデックス番号 button.setTitle(buttonLabels[buttonNumber],forState: UIControlState.Normal) //ボタンタップ時のアクション button.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside) //ボタン配置 self.view.addSubview(button) } } //計算結果ラベル設定する resultLabel.backgroundColor = UIColor.grayColor() resultLabel.font = UIFont(name:"Arial", size: 50) resultLabel.textAlignment = NSTextAlignment.Right resultLabel.numberOfLines = 4 resultLabel.text = "0" //計算結果ラベルをviewcontrollerクラスのviewに設置 self.view.addSubview(resultLabel) //ボタンタップメソッド func buttonTapped(sender:UIButton){ var tappedButtonTitle:String = sender.titleLabel!.text! println("\(tappedButtonTitle)ボタンがタップされました") } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

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

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

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

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

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

ikuwow

2015/06/03 07:48

ソースコードがすこし読みにくいため、Markdown記法の```でシンタックスハイライトして、ファイル名を併記していただけると助かります。
guest

回答1

0

ベストアンサー

メソッドbuttonTappedがviewDidLoad()の中でに書かれているのが原因です。

viewDidLoad()の外に記述すれば
エラーは起きません。

投稿2015/06/04 08:49

chonan

総合スコア28

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問