2016-10-09 1 views
1

Erstens, wenn Abschluss-Block der Kündigungsansicht ausgeführt wird? Ist es nachdem der Benutzer die Ansicht abgewiesen hat oder vorher?Wenn der Abschlussblock der Dismiss-Ansicht ausgeführt wird? Swift

weil ich diesen Code habe, um einen Toast mit einer Nachricht innerhalb des Fertigstellungsblocks zu machen, aber nie den Toast sehen, nachdem diese Sicht abgewiesen wurde.

 self.dismiss(animated: true, completion: { 
     self.view.makeToast(message: "Employee has been assigned successfully.", duration: 2.0, position: HRToastPositionCenter as AnyObject, title: "Succeeded!") 
}) 

Was ich möchte ist der Benutzer kann den Toast sehen, wenn die Ansicht vollständig entlassen?

Wie geht das?

+0

Sie das Ereignis aus präsentiert Controller an die Eltern delegieren kann und dort behandeln (entlassen und makeToast) – alexburtnik

Antwort

0

Sie rufen eine Abweisung auf self ab, so dass jeder Verweis auf dealloc ist. Ihre self.view existiert nicht mehr, denke ich.

+0

self.view existiert immer noch, weil es – iCaramba

+0

try Breakpoint stark gefangen ist das Hinzufügen auf Ihrem self.view.makeToast() Zeile und überprüfen Sie die Entitäten zu diesem Zeitpunkt –

0

Der Abschlussblock wird ausgeführt, nachdem der View Controller beendet wurde. Dies bedeutet, dass Ihre Ansicht nicht mehr auf dem Bildschirm angezeigt wird. Ich denke, Sie möchten den Toast innerhalb dieser Ansicht rendern, was nicht möglich ist, weil er nicht auf dem Bildschirm angezeigt wird.

0

Der Toast wird in Ihrer entlassenen Ansicht angezeigt. Da die Aussicht verschwunden ist, werden Sie seinen Toast nicht sehen. Möglicherweise möchten Sie den Toast auf dem folgenden Bildschirm anzeigen, der nach der ausgeblendeten Ansicht angezeigt wird.

+0

Vielen Dank, aber wie Sie den Toast von der aktuellen Ansicht zur nächsten anzeigen – Zizoo

+0

Wie haben Sie die Ansicht, die Sie jetzt ablehnen _present? –

3

Sie können das Ereignis vom präsentierten Controller an den übergeordneten Controller delegieren und dort behandeln.

In EmployeePickerViewController (oder was auch immer Ihre modal-Controller genannt wird):

@protocol EmployeePickerDelegate { 
    func employeeAssigned() 
} 

class EmployeePickerViewController { 
    weak delegate: EmployeePickerDelegate! 
} 

Wenn Mitarbeiter Zuordnung ist abgeschlossen rufen Sie einfach delegieren Methode:

delegate?.employeeAssigned() 

In Mainviewcontroller, wenn Sie modal präsentieren:

employeePicker.delegate = self 
present(employeePicker, animated: true, completion: nil) 

In MainViewController unter:

extension MainViewController: EmployeePickerDelegate { 
    func employeeAssigned { 
     dismiss(animated: true, completion: { 
      self.view.makeToast(message: "Employee has been assigned successfully.", duration: 2.0, position: HRToastPositionCenter as AnyObject, title: "Succeeded!") 
     }) 
    } 
} 
Verwandte Themen