2016-10-07 5 views
-2

Wie bekomme ich alle Ansichten in einer Nib-Datei? Ich versuche, alle Ansichten zu erhalten innerhalb eines Nib mit:Konnte Wert des Typs 'UIView' nicht in 'NSArray' umwandeln

let objects = Bundle.main.loadNibNamed("ViewName", owner: self, options: nil)?[0] as! NSArray 
    let mainView : UIView = objects[0] as! UIView 

Obwohl ich diesen Fehler bin immer:

Could not cast value of type 'UIView' (0x108080b40) to 'NSArray' (0x105173c58).

Vielen Dank im Voraus für Ihre Hilfe.

+0

Ich verstehe nicht, warum dies abgelehnt wurde? Hinterlasse einen Kommentar, damit ich ihn verbessern kann. –

Antwort

1

loadNibNamed kehrt Array vom Typ [Any]? und Ihre sind, es [0] mit tiefgestellt, bedeutet, dass Sie das erste Objekt von Array zugreifen. Entfernen Sie einfach [0].

let objects = Bundle.main.loadNibNamed("ViewName", owner: self, options: nil) 

Zweite Option können Sie direkt initialisiert UIView Objekt.

if let mainView : UIView = Bundle.main.loadNibNamed("ViewName", owner: self, options: nil)?[0] as? UIView {...} 

Wählen Sie, welche Lösung Ihren Fehler beheben wird.

+0

Hallo Ich habe versucht, beide Nirav D und alle Etiketten in der Ansicht werden nicht mit ihren Daten angezeigt. Außerdem werde ich bei der ersten Option gewarnt: Cast from '[Any]?' zu nicht verwandtem Typ 'NSArray' schlägt immer fehl. - Brauchst du beides wie das! in der 2. Option. Ich habe versucht, es zu bearbeiten, da es in Xcode einen Fehler verursacht hat. –

+0

Sie können nicht auf das Label zugreifen, weil Sie es in 'UIView' umgewandelt haben. Statt dessen müssen Sie es mit Ihrem' customView' transformieren. Auch habe ich die erste Option editiert, ohne '' Any]? 'Nach nsarray zu werfen. –

+0

@GerardGrundy Funktioniert es jetzt? –

Verwandte Themen