2017-02-21 3 views
0

Ich habe eine benutzerdefinierte Ansicht, die aus einer Nib-Datei geladen wird. Diese Sicht hat einen benutzerdefinierten Delegaten, ich setze den Delegaten auf meinen Hauptansicht-Controller, aber irgendwann wird der Delegat wieder auf Null gesetzt. hier füge ich die benutzerdefinierte Ansicht meiner Ansicht-ControllerFestlegen von benutzerdefinierten Delegaten in benutzerdefinierten Ansicht von NIB-Datei

@IBAction func newGoalButtonTapped(_ sender: UIBarButtonItem) { 
    let newGoalView = AddGoalView(frame: self.view.frame) 
    newGoalView.delegate = self 
    self.view.addSubview(newGoalView) 
    newGoalView.present() 
} 

Hier ist, wie ich in meiner benutzerdefinierten Ansicht Init-Methode

override init(frame: CGRect) { 
    super.init(frame:CGRect(x: frame.origin.x + 10, y: frame.height, width: frame.width - 20, height: frame.height/3)) 
     self.addSubview(self.instanceFromNib()) 
} 


private func instanceFromNib() -> AddGoalView { 
    return UINib(nibName: "AddGoalView", bundle: nil).instantiate(withOwner: self, options: nil)[0] as! AddGoalView 
} 

und dies ist die Feder-Datei laden, wie ich mein Protokoll erklären

protocol NewGoalCreatedDelegate { 
     func newGoalCreated(with proteinGoal:Int16, isCurrent:Bool)} 

Ich legte den Besitzer der Datei meiner Nib-Datei auf meine benutzerdefinierte Klasse "AddGoalView", und auch die Ansicht benutzerdefinierte Klasse zu "AddGoalView". Ich habe auch das eine oder andere versucht aber kein Glück.

Der Delegierte ist nicht null bis nach meiner derzeitigen Methode.

internal func present() { 
    UIView.animate(withDuration: 0.3, animations: { 
     self.center = self.superview!.center 
    }, completion: {(finished:Bool) in 
     print(self.delegate!) 
    }) 
    print(self.delegate!) 
} 

Danach der Delegierte Null ist, ich weiß, es ist etwas, wie Im mit meiner Nib-Datei verwandt ist, aber ich weiß nicht, was es ist.

+0

Ich glaube du bist in * Swing * vs * Swift * (schon behoben) – Frakcool

+1

@Frakcool durcheinander geraten! –

+0

Passt Ihr View-Controller korrekt zum Delegaten? d.h. 'class ViewController: UIViewController, NewGoalCreatedDelegate {}'? – Pierce

Antwort

0

Ich habe vergessen, die Filialen in der Datei Besitzer zu verbinden, um die Ansichten meines xib.file enter image description here

.

Verwandte Themen