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

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

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

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

Q&A

2回答

1874閲覧

viewDidLoad()について

tamago0224

総合スコア71

Swift

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

0グッド

0クリップ

投稿2015/06/12 02:54

編集2015/06/13 08:26

swiftでアプリ開発の際、ViewController.swift内のviewDidLoad()の中でmain.storyboardのボタンなどを追加しました。
そのとき、main.storyboardにボタンなどのUIをつけてViewController.swiftの関数と紐づけるような操作は可能でしょうか?
下のコードは以下のurlを参考にさせていただきました。
http://ja.stackoverflow.com/questions/10931/swift%E3%81%A7%E9%9B%BB%E5%8D%93%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA

lang

1 2import UIKit 3import Foundation 4 5class ViewController: UIViewController { 6 7 //計算結果を表示するラベルを宣言 8 var resultLabel = UILabel() 9 let xButtonCount = 4 //一行に配置するボタンの数 10 let yButtonCount = 4 11 //画面の横幅サイズを格納するメンバ変数 12 let screenWidth:Double = Double(UIScreen.mainScreen().bounds.size.width) 13 //画面の縦 14 let screenHeight:Double = Double(UIScreen.mainScreen().bounds.size.height) 15 //ボタン間の余白 16 let buttonMargin = 10.0 17 //計算結果表示 18 var resultArea = 0.0 19 20 //二つの項のうち左の項が入力済みかどうかを見る 21 var isLeftNotEmpty: Bool = false 22 23 24 25 26 override func viewDidLoad() { 27 super.viewDidLoad() 28 //画面全体の縦幅に応じて計算結果表示エリアの縦幅を決定 29 switch screenHeight{ 30 case 480: 31 resultArea = 200.0 32 case 568: 33 resultArea = 250.0 34 case 667: 35 resultArea = 300.0 36 case 736: 37 resultArea = 350.0 38 default: 39 resultArea = 0.0 40 } 41 //計算結果のラベル 42 resultLabel.frame = CGRect(x:10, y:30, width:screenWidth-20, height:resultArea-30) 43 44 let buttonLabels = [ 45 "7","8","9","×", 46 "4","5","6","-", 47 "1","2","3","+", 48 "0","C","÷","=" 49 ] 50 51 for var y=0; y<yButtonCount; y++ { 52 for var x=0; x<xButtonCount; x++ { 53 //計算機のボタン作成 54 var button = UIButton() 55 //ボタンの横幅 56 var buttonWidth = (screenWidth - (buttonMargin * (Double(xButtonCount)+1)))/Double(xButtonCount) 57 //ボタンの縦幅 58 var buttonHeight = (screenHeight - resultArea - ((buttonMargin*Double(yButtonCount)+1)))/Double(yButtonCount) 59 //ボタンのx座標 60 var buttonPositionX = (screenWidth - buttonMargin) / Double(xButtonCount) * Double(x) + buttonMargin 61 //ボタンのy座標 62 var buttonPositionY = (screenHeight - resultArea - buttonMargin) / Double(yButtonCount) * Double(y) + buttonMargin + resultArea 63 //ボタンの配置、サイズ 64 button.frame = CGRect(x:buttonPositionX, y:buttonPositionY, width:buttonWidth, height:buttonHeight) 65 //背景 66 button.backgroundColor = UIColor.greenColor() 67 //ボタンのラベルタイトル 68 var buttonNumber = y * xButtonCount + x 69 //ボタンのラベルタイトルを取り出すインデックス番号 70 button.setTitle(buttonLabels[buttonNumber],forState: UIControlState.Normal) 71 //ボタンタップ時のアクション 72 button.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside) 73 //ボタン配置 74 self.view.addSubview(button) 75 } 76 } 77 78 //計算結果ラベル設定する 79 resultLabel.backgroundColor = UIColor.grayColor() 80 resultLabel.font = UIFont(name:"Arial", size: 50) 81 resultLabel.textAlignment = NSTextAlignment.Right 82 resultLabel.numberOfLines = 4 83 resultLabel.text = "0" 84 85 //計算結果ラベルをviewcontrollerクラスのviewに設置 86 self.view.addSubview(resultLabel) 87 } 88 89 override func didReceiveMemoryWarning() { 90 super.didReceiveMemoryWarning() 91 // Dispose of any resources that can be recreated. 92 } 93 94 //ボタンタップメソッド 95 func buttonTapped(sender:UIButton){ 96 var tappedButtonTitle:String = sender.titleLabel!.text! 97 println("\(tappedButtonTitle)ボタンがタップされました") 98 99 } 100 101 102 103}

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

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

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

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

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

okenProg

2015/06/12 03:53

すみません。 説明だけではどういった状況で、どのようにしたいのか分かりませんでした。 ViewController.swiftをのコードを貼り付けてもらえばと助かります。
guest

回答2

0

じかんがたったため、自己解決にしました。

投稿2016/02/09 01:11

tamago0224

総合スコア71

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

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

0

viewDidLoadの話ではなくて、今まではviewDidLoadでボタンなどを配置していたけど
Main.storyboardにボタンを置いて、タップした時にViewControllerの関数(例えばbuttonTapped)が
呼ばれるようにしたいということです。

それであれば、

1.まずMain.storyboardにコードをボタンを配置します

2.次にタップされた時に呼ばれたい関数を書きます

ストーリーボードからその関数に紐付けられるようにfuncの前に@IBActionというキーワードを付けます

lang

1//ボタンタップメソッド 2class ViewController: UIViewController { 3 4 @IBAction func buttonTapped(sender:UIButton){ 5 var tappedButtonTitle:String = sender.titleLabel!.text! 6 println("\(tappedButtonTitle)ボタンがタップされました") 7 } 8 9}

3.Main.storyboardのボタンと関数を紐付けます

ストーリーボードで関数と紐付けたいボタンを右クリックします。

そうすると黒いウィンドウが表示されるので、紐付けたいアクション(TouchUpInside)の横にある
◯からドラッグし、線を上の黄色のViewControllerまで持って行って離します。

![イメージ説明]WIDTH:300

そうすると先程作成した関数名が表示されるので、それをクリックすると紐付け完了です。

あとは実際に動かしてその関数がよばれることを確認してください。

投稿2015/06/13 10:49

okenProg

総合スコア153

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

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

tamago0224

2015/06/15 05:01

storyboardにはボタンは置いていないのですがその場合はどうすれば良いのでしょう?
okenProg

2015/06/15 05:47

コードで作成したボタンであれば お貼りになられたコードの真ん中らへんの //ボタンタップ時のアクション button.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside) というところで紐付けられていますが、これとは違うやり方、目的ということですか? 質問の意図がよく分かりません。
tamago0224

2015/06/16 12:47

数字のボタンと演算記号のボタンとで紐付ける関数を分けたいということです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問