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

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

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

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Swift

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

Q&A

解決済

1回答

1226閲覧

UI部品を変数のような感じで扱いたい

apple2

総合スコア37

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Swift

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

0グッド

0クリップ

投稿2017/03/27 06:20

編集2017/03/27 07:30

Swift3でUI部品を配列に入れるなどして、変数みたいに扱いたいのですが
書き方がよくわかりません

Swift3

1@IBOutlet var label_001: UILabel! 2@IBOutlet var label_002: UILabel! 3@IBOutlet var label_003: UILabel! 4@IBOutlet var label_004: UILabel! 5 6 7//こんなことを 8var i = 1 9 10switch i { 11case 1: label_001.text = "this is 001" 12case 2: label_002.text = "this is 002" 13case 3: label_003.text = "this is 003" 14case 4: label_004.text = "this is 004" 15default : break 16} 17 18 19//こんな風にしたいのですが 20func say(_ i: Int){ 21 let arr = [label_001,label_002,label_003,label_004] as [Any] 22 ( arr[i] as AnyObject).text = "this is 00" + String(i) 23} 24 25_ = say(1) 26

Type 'Any' does not conform to protocol 'AnyObject' こういうエラーが出ます

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

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

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

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

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

fuzzball

2017/03/27 06:31

switch文の中が全て label_001 になっていますが間違いでしょうか?あと、何を質問しているのかイマイチ分からないのですが、今のコードであなたが困っていることを言葉で書いて下さい。
apple2

2017/03/27 06:46 編集

たくさん部品があるとき、その名前をいちいち書き込んでいたら長い行ができてしまうので、簡単にかけるようにしたいと思ってます
fuzzball

2017/03/27 06:52 編集

「こんな風にしたい」に書いてあるコードで大体合っていると思うので、このコードで困っていることを書いて下さい。もしくは、「こんな風にしたい」を具体的に書いて下さい。
apple2

2017/03/27 07:02 編集

このコードではエラーが出てしまいます。配列に入れる時 as[Any]を使うようにとか、arr[i]には as AnyObjectを付けるように言われるんですけど、エラーが解決できないのです。それで、根本的に方法がまちがっているのかと思ったので質問してみました
apple2

2017/03/27 07:04

ラベルの内容だけでなく、ボタンのenableや色なども変更したいと思ってます
fuzzball

2017/03/27 07:15

エラーが出るなら、その内容を質問内に書いて下さい。
apple2

2017/03/27 07:21 編集

let arr = [label_001,label_002,label_003,label_004] as [Any] ( arr[i] as AnyObject).text = "this is 00" + String(i) こう書き直すと Type 'Any' does not conform to protocol 'AnyObject' こういうエラーが出ます
fuzzball

2017/03/27 07:24

「質問内に書いて下さい」
fuzzball

2017/03/27 07:32

修正前のコードの方が「まとも」なのですが、どういうエラーが出ていたのでしょうか?(Swift3環境が無いのでスミマセン)
apple2

2017/03/27 07:46 編集

let arr = の行でas[Any]を付けないと Heterogenous collection literal could only be inferred to '(Any)';add explicit type annotation if this is intentional というエラーが出ます
apple2

2017/03/27 07:48

arr[i].text の行では as AnyObjectをつけないとValue of type 'Any' has no member 'text'というエラーになります
fuzzball

2017/03/27 07:54 編集

(deleted)
apple2

2017/03/27 07:54

そうです、それらをXcodeが言うように修正すると、質問のところに書いたエラーになります
guest

回答1

0

ベストアンサー

swift

1func say(_ i: Int){ 2 let arr: [UILabel] = [label_001,label_002,label_003,label_004] //配列の型を明示します 3 arr[i-1].text = "this is 00" + String(i) //配列は0から始まるので-1します 4}

これでどうでしょう?

投稿2017/03/27 08:03

fuzzball

総合スコア16731

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

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

apple2

2017/03/27 08:08

わかりにくい質問に時間をおかけいただきありがとうございました、無事に解決することができました 今後とも宜しくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問