2016-08-17 11 views
1

Добрый день!iOS UITextView делегат в другом файле

Извините, мой английский.

У меня возникла проблема с назначением делегата textView другому классу.

  1. У меня есть комментарийViewController и ViewController в связанном с ним storyBoard.
  2. У меня есть элемент UITextView на ViewController (в storyBoard) и выход в CommentsViewController (называемый newCommentTextView).
  3. Я создал класс CommentTextViewDelegate: NSObject, UITextViewDelegate.
  4. В viewDidLoad CommentsViewController, я сделал это

    newCommentTextView.delegate = CommentTextViewDelegate() 
    
  5. Я добавил и textViewDidChange и textViewDidEndEditing и _: shouldChangeTextInRange: .... Но ни одна из этих функций не вызывается, когда я изменяю текст TextView!

Что случилось со мной? Спасибо.

+0

Почему вы должны установить розетку в контроллер и установить делегат в другой? –

+0

Какова связь между CommentsViewController и ViewController? – Catoshi

+0

@TonyHan В storyBoard, в viewController идентификатор инспектор Я назначил класс CommentsViewController. –

ответ

1

Делегат является слабым указателем. Поэтому вам нужно создать свойство класса CommentTextViewDelegate, а затем назначить его делегату текстового представления в соответствии с приведенным ниже кодом. После этого вы будете получать уведомления при любых изменениях.

let textViewDelegate = CommentTextViewDelegate() 
    func viewDidLoad() { 
    newCommentTextView.delegate = textViewDelegate 
    } 
2

newCommentTextView.delegate = CommentTextViewDelegate() имеет экземпляр error.The из CommentTextViewDelegate был освобожден после того, как viewDidLoad() является called.So CommentsViewController должен владеть CommentTextViewDelegate.

let textViewDelegate = CommentTextViewDelegate() 
func viewDidLoad() { 
    newCommentTextView.delegate = textViewDelegate 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^