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

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

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

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

Q&A

解決済

2回答

1871閲覧

viewDidLoadでセットしたviewの設定を変えるには?

Acyarot

総合スコア11

Swift

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

0グッド

0クリップ

投稿2016/07/29 15:35

viewDidLoadでセットしたviewを、状況に応じて隠したり表示したりしたいのですが、下記のコードを実行しようとすると、下から3行目の、肝心の view1.hidden = true が、use of unsoloved identifier 'view1' というエラーを起こします。
どうしたら良いでしょうか?

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() { super.viewDidLoad() let view1 = UIView(frame:CGRectMake(0, 0, 50, 50)) view1.backgroundColor = UIColor.greenColor() let button1 = UIButton(frame:CGRectMake(60, 0, 50, 50)) button1.backgroundColor = UIColor.redColor() button1.setTitle("ボタン", forState: .Normal) button1.setTitleColor(UIColor.whiteColor(), forState: .Normal) button1.addTarget(self, action: #selector(onClickMyButton), forControlEvents: .TouchUpInside) self.view.addSubview(view1) self.view.addSubview(button1) } func onClickMyButton(sender: UIButton){ view1.hidden = true }

}

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

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

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

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

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

guest

回答2

0

view1をインスタンス変数として宣言してください。

載せていいるコードだとview1viewDidLoad()のスコープ内({})でのみ有効で、その外に書いているonClickMyButton()メソッドでは使用できません。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 let view1: UIView = UIView(frame:CGRectMake(0, 0, 50, 50)) 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 view1.backgroundColor = UIColor.greenColor() 11 12 let button1 = UIButton(frame:CGRectMake(60, 0, 50, 50)) 13 button1.backgroundColor = UIColor.redColor() 14 button1.setTitle("ボタン", forState: .Normal) 15 button1.setTitleColor(UIColor.whiteColor(), forState: .Normal) 16 button1.addTarget(self, action: #selector(onClickMyButton), forControlEvents: .TouchUpInside) 17 18 self.view.addSubview(view1) 19 self.view.addSubview(button1) 20 } 21 22 func onClickMyButton(sender: UIButton){ 23 view1.hidden = true 24 } 25}

投稿2016/07/29 22:20

_Kentarou

総合スコア8490

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

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

Acyarot

2016/07/30 01:45

ありがとうございました。これも回答の一つですね。勉強になります。 今回、他の方が5分ばかり早くご回答されていたので、そちらをベストアンサーにさせて頂きました。ご了承下さい。
guest

0

ベストアンサー

let view1 = UIView(frame:CGRectMake(0, 0, 50, 50))

は、view1をviewDidLoad内のローカル変数として定義していますから、
viewDidLoadの外でこのview1を使うことはできません。

viewDidLoadの外で
var view1: UIView!
とプロパティとしてview1を定義し、
viewDidLoad内は
view1 = UIView(frame:CGRectMake(0, 0, 50, 50))
とletを削除して、プロパティのview1にUIViewを格納すれば
onClickMyButtonの中でview1を使えます。

投稿2016/07/29 22:15

TakeOne

総合スコア6299

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

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

Acyarot

2016/07/30 01:43

ありがとうございました! 解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問