UI要素の配列を作成しようとしていますが、内部にさまざまな型があります。いくつかは画像ビューであり、いくつかはボタンです。私は、このような異なる種類のUI要素を配列に入れてみましょう
@IBOutlet var things: [UIButton]!
と、同じ型のコレクションを作成するに精通していますが、私もそれに画像ビューを追加する必要がありながら、そのコードは、ボタンの配列になります。両方の型を受け入れる配列を作るにはどうすればよいですか?
UI要素の配列を作成しようとしていますが、内部にさまざまな型があります。いくつかは画像ビューであり、いくつかはボタンです。私は、このような異なる種類のUI要素を配列に入れてみましょう
@IBOutlet var things: [UIButton]!
と、同じ型のコレクションを作成するに精通していますが、私もそれに画像ビューを追加する必要がありながら、そのコードは、ボタンの配列になります。両方の型を受け入れる配列を作るにはどうすればよいですか?
@IBOutlet weak var view2: UIView!
var uiElements:[UIView] = []
override func viewDidLoad() {
super.viewDidLoad()
let button1 = UIButton()
let image1 = UIImageView()
uiElements.append(button1)
uiElements.append(image1)
uiElements.append(view2)
for element in uiElements {
if element is UIButton {
print("it's a button")
} else if element is UIImageView {
print("it's imageview")
} else if element is UIView {
print("it's uiview")
} else {
print("error")
}
}
}
Output:
it's a button
it's imageview
it's uiview
なぜ 'AnyObject'を使うのですか?ビューの配列であるため、 'UIView'を使用してください。 – rmaddy
UIViewの配列を使用してください。 var arrayOfThings : [UIView]
これは 'IBOutlet'ではないことに注意してください。 IBOutletCollectionをマークすることを意味しますか、それとも偶然追加しましたか? –