2016-03-27 8 views
0

Ich habe einige Schwierigkeiten, einen Verweis auf eine Unteransicht zu erhalten. Grundsätzlich habe ich eine UIView, die eine Sammlung von benutzerdefinierten UIViews enthält. Was ich brauche, ist eine Referenz auf eine bestimmte Ansicht, um sie zu ändern.Schwierigkeiten, eine Unteransicht zu finden und zu ändern

habe ich versucht, zwei verschiedene Ansätze, wo die erste als Konzept so etwas wie ist:

for i in 1...8 { 
    let myCustomView = MyCustomView(frame: CGRect(0, 0, 100, 100)) // frame is with fake numbers just to write the snippet 
    myCustomView.customProperty = some property 
    myCustomView.image = some UIImage 
    myCustomView.tag = i 

    addSubview(myCustomView) 
} 

ich einen Hinweis zu bekommen versucht, sagen wir mal, Ansicht mit Tag 2 auf diese Weise:

if let viewWithTag = self.viewWithTag(2) as! MyCustomView { 
    viewWithTag.image = a different Image 
} 

Ich kann sehen, dass ViewWithTag nicht gleich Null ist, aber für jede Eigenschaft, die ich ändere, wird nichts in der App reflektiert.

Ein anderer Weg, um die subview zuzugreifen etwas wie ist:

let myViews = self.subviews.filter({$0 is MyCustomView}) 
let specificView = myViews[1] as! MyCustomView 

specificView.image = something else 

Ich habe myViews In diesem Fall, dass die Subviews alle enthält, enthält specificView die spezifische Sicht, aber auch hier ist nichts in der App

reflektiert

Als Anmerkung ist MyCustomView vom Typ UIImageView und der Hauptcontainer ist UIView

Ist meine Vorgehensweise korrekt?

Vielen Dank im Voraus

Antwort

0

Sie könnten die Bildansicht zu realisieren, braucht es ein Update auf Schubs brauchen.

Nach der Bildeinstellung, versuchen dabei ein:

viewWithTag.setNeedsDisplay() 

Bedenken Sie auch etwas anderes verwenden als Tags Ihre benutzerdefinierten Bildansichten zu unterscheiden (wie, wie etwa eine String-Eigenschaft Name?), Da die allgemeinen Zahlen in Tags verwendet, sagen nicht wirklich, wofür sie verwendet werden.

Verwandte Themen