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' こういうエラーが出ます
switch文の中が全て label_001 になっていますが間違いでしょうか?あと、何を質問しているのかイマイチ分からないのですが、今のコードであなたが困っていることを言葉で書いて下さい。
たくさん部品があるとき、その名前をいちいち書き込んでいたら長い行ができてしまうので、簡単にかけるようにしたいと思ってます
「こんな風にしたい」に書いてあるコードで大体合っていると思うので、このコードで困っていることを書いて下さい。もしくは、「こんな風にしたい」を具体的に書いて下さい。
このコードではエラーが出てしまいます。配列に入れる時 as[Any]を使うようにとか、arr[i]には as AnyObjectを付けるように言われるんですけど、エラーが解決できないのです。それで、根本的に方法がまちがっているのかと思ったので質問してみました
ラベルの内容だけでなく、ボタンのenableや色なども変更したいと思ってます
エラーが出るなら、その内容を質問内に書いて下さい。
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'
こういうエラーが出ます
「質問内に書いて下さい」
修正前のコードの方が「まとも」なのですが、どういうエラーが出ていたのでしょうか?(Swift3環境が無いのでスミマセン)
let arr = の行でas[Any]を付けないと
Heterogenous collection literal could only be inferred to '(Any)';add explicit type annotation if this is intentional
というエラーが出ます
arr[i].text の行では as AnyObjectをつけないとValue of type 'Any' has no member 'text'というエラーになります
(deleted)
そうです、それらをXcodeが言うように修正すると、質問のところに書いたエラーになります
回答1件
あなたの回答
tips
プレビュー