Wie gehen Sie zu einem anderen view-controller, wenn die Taste gedrückt wird in swift 3
Dieser code ist in OverlayView.swift
protocol OverlayViewControllerDelegate {
func didCancel(overlayView: OverlayView)
func didShoot(overlayView: OverlayView)
}
class OverlayView: UIView {
@IBOutlet weak var cameraLabel: UILabel!
var delegate: OverlayViewControllerDelegate! = nil
@IBAction func cancel(_ sender: AnyObject) {
cameraLabel.text = "I want to exit"
delegate.didCancel(overlayView: self)
}
Alles was ich tun möchte ist jederzeit die Schaltfläche "Abbrechen" klicken. Ist das die aktuelle Seite transformieren Sie die Seite-view-controller. Ich will von Seite a zu Seite b ist.
- was ist
page a
undpage b
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es
OverlayViewDelegate
nichtOverlayViewControllerDelegate
da es nicht ein controller, von wo aus Sie versenden den Fall, richtig? VonOverlayView
's Sicht ist es egal, wer ist eigentlich die Durchführung dieses Protokolls, aber es ist wichtiger, wer schickt ein Ereignis.Vermutlich haben Sie eine view-controller irgendwo, die gehen, um
implement
diesem Protokoll:Sie können entweder präsentieren Sie Modal oder schieben Sie es in die navigation stack. Der erste Ansatz ist vorzuziehen, wenn Sie sind gonna zeigen nur einen controller und es gibt keine tiefere view-Controller, um die show und die zweite ist zum schieben mehr und mehr Controller in der navigation stack.
Push-to-navigation stack:
Vorhanden Modal Beispiel:
Sie können erstellen Sie einen übergang im storyboard aus einer view-controller zu einem anderen durch ziehen mit der rechten Maustaste gedrückt. Ordnen Sie eine storyboard id können Sie dann
perform
dass segue von code wie dieser:Den übergang selbst kann push oder vorhanden Modal, wählen Sie einfach ein korrekter Typ, wenn Sie ihn erstellen.
dismiss
Ihreoverlay view controller
(p.5)Hinzufügen dieser Erweiterungen zu Ihrem Projekt und erhalten Sie den view-controller der Blick über
parentViewController
.Wenn Sie einen übergang vorbereitet in das storyboard mit einem identifier:
Oder wenn Sie dem instanzieren der controller manuell, stellen Sie den controller mit:
Wenn Sie lieber nicht, diese Erweiterungen verwenden und benutzen Sie einfach Ihre delegate-Protokoll statt, stellen Sie sicher, dass der controller stellt die
OverlayView
entspricht derOverlayViewDelegate
und stellen Sie die Stellvertretung desOverlayView
Blick aufself
im controller.