2016-07-23 1 views
0

Я думаю, что для решения этой проблемы потребуется использовать делегирование, но я не знаком с их использованием. Так что в моем проекте у меня есть мой главный viewcontroller/storyboard, который содержит UIScrollView. То, что UIScrollview вызывает другую раскадровку (xib file) в качестве подзаголовка. Другая раскадровка (которая является xib file) управляется другим быстрым файлом.Функции вызова от отдельных контроллеров представления в swift

Мой вопрос: когда я вызываю действие внутри своей другой раскадровки, как я могу вызвать функцию из основного viewcontroller. Как говорят viewdidload с первого viewcontroller. Я не могу сделать все это глобальной функцией, он должен оставаться внутри своего класса. Поэтому, если я пытаюсь сделать ViewController.viewDidLoad(), ему нужна (я думаю) переменная экземпляра или что-то в этом роде.

Спасибо.

ответ

0

Вы можете попробовать:

  1. Используя слабую переменную (свойство) в другом классе с типом UIViewController
  2. Назначить контроллер родительского вида для этого свойства после того, как другой вид инициализируется

Хорошо читается о слабых, сильных, не имеющих значения ссылках Here И Here

0

Во-первых, если вы хотите c все это с именем класса, как вы сказали выше, объявляет ваш метод «class». Таким образом, он как статичный в Java. Это делает его общим для вызова в любом месте вашего проекта. Сделайте отдельное расширение.

class func myfunc(){ 
} 

, если вы хотите отправить данные с B на контроллер A. Вы используете так называемую делегирование. Вы даете работу от B до A. Сделайте протокол выше B для функций, которые вы хотите сделать или отправить с ними. Назовите их в B. И затем в A напишите код для этих функций. Так что у вас есть данные от B до A

Еще вы требуете что-то вроде общих данных. Создайте класс singleton и инициализируйте методы свойств там. Вы можете использовать для этого объекты и называть его другим контроллером для изменения или создания разных экземпляров.

Вы не звоните viewDidLoad(). Как сказано в названии, он загружается один раз. Если вы хотите что-то изменить каждый раз, когда появится экран, используйте viewWillAppear

+0

Я знаю, что могу сделать это, чтобы сделать метод статическим. Но в моем случае метод, который я хочу назвать, должен быть статическим, должен иметь отношение UIScrollview к нему. Что не может произойти, если оно не в классе. Правильно? Я не уверен, как обойти это. – acday