2014-09-28 8 views
6

:Swift - alınıyor subviews ben görünümüne etiket ekliyorum ve sonra bir düğme tıklandığında görünümünden belli etiketleri temizlemek için çalışırken ve subviews almaya çalışırken bir hata içine çalıştırıyorum Benim uygulamada

class FirstViewController: UIViewController { 

    @IBAction func btnAddTask_Click(sender: UIButton){ 

      var subViews = self.subviews.copy() 

    } 
} 
hata alıyorum:

'FirstViewController' adlı bir üye yok 'subviews'

nasıl geçerli görünümün subviews alabilirim?

+1

'kendini. view.subviews'? –

+0

Bunu denedim ve şu hatayı aldım: '[AnyObject]' 'copy' adlı bir üye yok – user2961953

+0

Arrays her zaman Swift'de kopyala. –

cevap

11

UIViewController, subviews özelliklerine sahip değil. Bu bir subviews mülkü bulunan bir view özelliğine sahiptir:

for subview in self.view.subviews { 
    // Manipulate the view 
} 

Ama genellikle bu iyi bir fikir değil. Bunun yerine istediğiniz etiketleri IBOutletCollection içine koyup bunun üzerine yinelemeniz gerekir. Aksi halde, kesin alt raporlara (değişebilir) bağlı kaldınız.

IBOutletCollection oluşturmak için, IB'de istediğiniz tüm etiketleri seçin ve bunları kaynak koduna sürükleyin. Bir koleksiyon dizisi yapmak isteyip istemediğini sormalısınız. (Bu dizinin sipariş üzerine herhangi bir söz verilmediğini unutmayın.)

+0

teşekkürler. Bu işe yarıyor. IBOutletCollection – user2961953

+0

'u kullanmayla ilgili öneriye bakacağım. Etiketleri dinamik olarak oluşturuyorum. Bu nedenle, etiketleri kaynak koddan koleksiyona nasıl ekleyeceğimi bulmam gerek. Tekrar teşekkürler – user2961953

+0

Sadece bunları oluştururken bir dizi özelliğine koyun. –

4

senin görünümünden tüm subviews bulmak için bu kodu kullanabilirsiniz:

for subview in self.view.subviews { 
    // Use your subview as you want 
} 

Ama kullanılmak üzere o, görünümü belirlemek gerekir ne gerekir. Böyle özel Identifier ile oluşturduğunuz ne olduğu hakkında bir eleman, işaretleyebilirsiniz:

myButton.restorationIdentifier = "mySpecialButton"; 

Ve bundan sonra da eleman bu yapıyı kullanmak bulabilirsiniz:

for view in view.subviews { 
       if (view.restorationIdentifier == "mySpecialButton") { 
        print("I FIND IT"); 
        view.removeFromSuperview(); 
       } 
      } 

:)

İlgili konular