Ich habe ein altes Projekt hochgezogen, das versucht, einige Funktionalität wiederzuverwenden. Ich habe eine Feder mit einer UIView-Unterklasse erstellt. In der ursprünglichen, funktionierenden Version musste ich File's owner
in IB nicht einstellen. Ich empfange jedoch Fehler, die ich jetzt tun muss (Xcode 7): loaded the "TipView" nib but the view outlet was not set.
Der Versuch, eine Feder programmatisch zu laden, die unzählige Fehler empfängt, die in Xcode 6 nicht angetroffen wurden
So fuhr ich fort, die File's owner
bis zu dem View-Controller, der für die Einrichtung der Ansicht verantwortlich ist. Hier ist der relevante Code aus dem View-Controller:
class TipViewController: UIViewController {
private let kTipViewHeight: CGFloat = 400
private let kTipViewWidth: CGFloat = 300
override func viewDidLoad() {
super.viewDidLoad()
if let tipView = createTipView() {
let center = CGPoint(x: CGRectGetWidth(view.bounds)/2, y: CGRectGetHeight(view.bounds)/2)
tipView.center = center
view.addSubview(tipView)
}
}
func createTipView() -> UIView? {
if let view = UINib(nibName: "TipView", bundle: nil).instantiateWithOwner(nil, options: nil).first as? TipView {
view.frame = CGRect(x: 0, y: 0, width: kTipViewWidth, height: kTipViewHeight)
return view
}
return nil
}
}
extension UIViewController {
func presentTips(tips: [Tip], animated: Bool, completion: (() -> Void)?) {
let controller = TipViewController()
controller.modalTransitionStyle = .CrossDissolve
presentViewController(controller, animated: animated, completion: completion)
}
}
Ich habe versucht Einstellung instantiateWithOwner
zu: .instantiateWithOwner(self, options: nil).first
(geändert nil
-self
) auch ohne Erfolg.
Dies ist relevant Presenting-View-Controller-Code:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
presentTips([], animated: true, completion: nil)
}
Die UIView Unterklasse alles tun, nicht aus dem Üblichen, so habe ich nicht schließen sein Code gestört.
Wenn ich die Änderungen angefordert - füge TipViewController als Datei Besitzer Spitze und Haken seinen view
Ausgang an die Spitze Ansicht - ich bekomme eine Reihe von Fehlermeldungen, auf den Konfigurationen abhängig von Mir nehme hin:
this class is not key value coding-compliant for the key view.
Can't add self as subview
nicht sicher, warum ich in der Lage war, eine Feder zu verwenden, ohne eine Datei des Besitzers in Xcode 6, aber ich bin nicht in der Lage 7, um von Xcode zu tun - gefunden haben kein Material oder Notizen bezogen auf die Veränderung freigeben, also bin ich jetzt ein wenig ratlos.
Jede Hilfe wird sehr geschätzt.
Danke für den Eingang @matt. Das hat es für mich nicht gelöst. Aber ich bin mir sicher, dass es das für andere auflösen wird. –
Ich bin sicher, was ich sage, ist richtig. Beachten Sie, dass Sie möglicherweise alle Caches _ löschen müssen, bevor dies funktioniert, um die "schlechte" Schreibfeder (die mit dem TipView-Namen) loszuwerden. Siehe http://StackOverflow.com/questions/5714372/how-to-empty-caches-and-clean-all-targets-xcode-4/6247073#6247073 Wenn das nicht funktioniert, können Sie mindestens die relevanten posten Stück des Projekts auf GitHub? Ich werde es für dich reparieren. – matt
Das Löschen der Caches wurde als Schritt hinzugefügt. Das ist entscheidend. Sie haben wirklich alles vermasselt, indem Sie diesen Namen verwendet haben und es wird etwas Arbeit brauchen, um sie zu lösen. – matt