Я провел часы, пытаясь узнать делегации и хотя я не обернуты мою голову вокруг него полностью. Я знаю, что такое код. Вот шпаргалка о том, как это произошло:
Цель:. Для выполнения функции или передать данные обратно из UIView в UIViewController это в
Пример: У вас есть UIViewController с UIView, вы хотите нажать кнопку в UIView и заставить UIViewController выполнить сеанс.
Отказ от ответственности: этот конкретный пример хромой, поскольку вы можете подключить кнопку UIView прямо к UIViewController через раскадровку, но вы получите представление.
Чтобы выполнить пример выполните следующие действия:
1. В классе UIView вы хотите, чтобы написать это (это отправитель класс):
import UIKit //written for reference on file scope
// Define protocol outside of class
protocol SomeUIViewDelegate {
func segueFunction() //this function will be in your receiving class
}
class SomeUIView: UIView {
//define the delegate as such:
var delegate: SomeUIViewDelegate?
//fake button press function I made for the tutorial
func someButtonPress(){
//this code goes wherever you want the delegate to "fire," like in this button press
delegate?.segueFunction()
}
}
2. В вашем классе UIViewController вы захотите это написать (это приемник класс):
import UIKit //written for reference on file scope
//state the class will conform to the delegate
class SomeUIViewController: UIViewController, SomeUIViewDelegate {
//IMPORTANT: you must instantiate the SomeUIView class!
//use storyboard to right click drag and drop a line onto assistant editor, then name the instance
@IBOutlet weak var SomeUIViewNamedInstance
override func viewDidLoad() {
super.viewDidLoad()
//set the classes delegate to itself in viewDidLoad
SomeUIViewNamedInstance.delegate = self
}
//this is the function we defined in the protocol in SomeUIView class, it executes whenever you call it from the sender class
func segueFunction() {
//perform segue or whatever else you want
//EXTRA CREDIT: You can pass data too from sender to receiver within the function parameters!!
}
}
EDIT: Хотелось бы добавить эту замечательную статью о делегировании этого ответа для любопытных умов. http://matteomanferdini.com/how-ios-view-controllers-communicate-with-each-other/
Как это можно назвать? У меня есть 2 разных класса. –
Добавьте переменную 'viewController' в свой класс, который должен выполнить segue. И перед добавлением subview, установите 'viewController' в ваше представление. 'xib.viewController = self; self.view.addSubview (xib); ' – GRiMe2D
Не могли бы вы описать первую часть о' viewController'? –