2017-05-10 1 views
1

UI要素の配列を作成しようとしていますが、内部にさまざまな型があります。いくつかは画像ビューであり、いくつかはボタンです。私は、このような異なる種類のUI要素を配列に入れてみましょう

@IBOutlet var things: [UIButton]! 

と、同じ型のコレクションを作成するに精通していますが、私もそれに画像ビューを追加する必要がありながら、そのコードは、ボタンの配列になります。両方の型を受け入れる配列を作るにはどうすればよいですか?

+0

これは 'IBOutlet'ではないことに注意してください。 IBOutletCollectionをマークすることを意味しますか、それとも偶然追加しましたか? –

答えて

2
@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 
+1

なぜ 'AnyObject'を使うのですか?ビューの配列であるため、 'UIView'を使用してください。 – rmaddy

3

UIViewの配列を使用してください。 var arrayOfThings : [UIView]

関連する問題