2016-03-03 2 views
2

У меня есть UIViewControllerКак установить делегат UIView?

class WelcomeViewController: UIViewController 

и UIView

class SignUpView: UIView 

Теперь я хочу установить в моем WelcomeViewController делегат SignUpView:

protocol SegueDelegate { 
    func runSegue(identifier: String) 
} 

class SignUpView: UIView { ... } 

и подключить его в

class WelcomeViewController: UIViewController, SegueDelegate { 

Как я могу установить в моем приветствииViiewController эти делегаты? Когда я пытаюсь установить:

override func viewDidLoad() { 
    SignUpView.delegate = self 
} 

возвращает мне

Instance member 'delegate' cannot be used on type 'SignUpView' 

как я могу найти решение?

+0

Я предполагаю, что свойство 'delegate' находится не на уровне класса, а на уровне экземпляра; я прав? – holex

ответ

1

Вы пытаетесь установить делегат в класс. Он должен быть экземпляром класса, т.е.

let signUpView = SignUpView() 
signUpView.delegate = self 
+0

Да, это работает, но почему моя функция делегата не звонит? Можете ли вы посмотреть мой код? Короче - http: // pastebin.com/7J5bSTzd –

+0

Все кажется прекрасным, вы можете проверить, действительно ли signUp вызывается, и у вас есть segue с id «goToMainPage» –

+0

, он даже не вызывает мою функцию делегата. Да, у меня такой отступ –

0

Какой смысл в этом? Если вы хотите, чтобы перейти от одного вида к другому, просто добавить, что SEGUE в раскадровке с идентификатором, так что вы можете позвонить self.performSegueWithIdentifier("IdentifierOfSegue", sender: self)

0

Создать слабое свойство в SignUpView этого делегата (протокол) и назовите его, кроме делегируют

, то вы можете установить и использовать его.

+0

Да, это работает, но почему моя функция делегата не звонит? Можете ли вы посмотреть мой код? Это коротко - http://pastebin.com/7J5bSTzd –

+0

Пожалуйста, переименуйте его segueDelegate, а затем отметьте – techloverr

+0

это имя переменной var: SegueDelegate? 'Или где? Извините, я не поймал его –

0

Я согласен с разработчиками говорят «вы можете просто сделать это через Segue», но проблема вы не объявить делегат вар в классе SignUpView так вы можете реализовать его в signIn, если вы его объявили, напишите мне код строки в комментарии, чтобы проверить его на ... Я могу предположить, что вы создаете подкласс как родительский класс, а затем переопределяете , который метод, который вы хотите вызвать , и вам нужно объявить делегат var как необязательный (так что у вас не будет цикла памяти), как в следующей строке ...

var delegate: SegueDelegate? 
Смежные вопросы