2015-06-16 3 views
0

Я новичок в разработке IOS,Доступ к ViewController класса из другого класса в Swift

У меня есть и «API Helper» Swift класс, который получает некоторые данные в виде массива JSON. И когда массив готов, я хочу вызвать метод в моем MasterViewController для обновления таблицыView с данными.

Я пытался сделать так:

var facilities : [Facility]? { 
     didSet { 

      MasterViewController().facilitiesLoaded() 
     } 
    } 

А затем перезагрузить Tableview, но ничего не видя.

Я думаю, проблема в том, что я создаю новый экземпляр ViewController, но мне нужно иметь доступ к текущему экземпляру класса.

Любая идея, или лучший дизайн? Спасибо ..

+2

Вы создаете новый объект и вызов метода в нем, не называя существующий 'MasterViewController'. Возможно, лучший дизайн будет либо использовать callback 'block', либо использовать' NSNotifications'. – dcestari

+0

Не могли бы вы дать мне хороший пример в Swift (или ссылку на) о блоке обратного вызова, спасибо .. – Hashem

ответ

1

Благодаря @dcestari,

Я добавляемые обратного вызова блоков для вызова API и обрабатывал это в ViewController и что сделал трюк

в методе API вызывающего абонента:

func loadFacilities(completionHandler:(() -> Void!)) { 
    // do stuff 
    completionHander() 
} 

В ViewController:

func getFacilities() { 
     api.loadFacilities({ 
      // update tableView 
     }) 
    } 
1

Если эта переменная «объектов» является экземпляром MasterViewController то сделать:

var facilities : [Facility]? { 
didSet { 
     self.facilitiesLoaded() 
    } 
} 
+0

Нет, это не так, я пытаюсь установить все источники данных в один отдельный и общий класс. – Hashem

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