У меня есть пользовательский вид, который загружается из файла nib. В этом представлении есть пользовательский делегат, я устанавливаю делегат на свой главный контроллер представления, но затем в какой-то момент делегат снова устанавливается на нуль. здесь я добавить настраиваемое представление на мой взгляд контроллернастройка пользовательского делегата в пользовательском представлении из файла nib
@IBAction func newGoalButtonTapped(_ sender: UIBarButtonItem) {
let newGoalView = AddGoalView(frame: self.view.frame)
newGoalView.delegate = self
self.view.addSubview(newGoalView)
newGoalView.present()
}
Вот как я загрузить файл острия в моем пользовательский метод вид инициализации
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
}
и это, как я объявляю свой протокол
protocol NewGoalCreatedDelegate {
func newGoalCreated(with proteinGoal:Int16, isCurrent:Bool)}
Я установил владельца файла моего файла nib в свой пользовательский класс «AddGoalView», а также пользовательский класс представления в «AddGoalView». Я тоже пробовал один или другой, но не повезло.
Делегат не является ничем до моего нынешнего метода.
internal func present() {
UIView.animate(withDuration: 0.3, animations: {
self.center = self.superview!.center
}, completion: {(finished:Bool) in
print(self.delegate!)
})
print(self.delegate!)
}
После этого делегат ноль, я знаю, что это что-то связано с тем, как Im с помощью моего острия файл, но я не знаю, что это такое.
Я думаю, вы запутались в * Swing * vs * Swift * (уже исправлено) – Frakcool
@Frakcool спасибо! –
Правильно ли ваш контроллер просмотра соответствует делегату? то есть 'class ViewController: UIViewController, NewGoalCreatedDelegate {}'? – Pierce