2017-02-08 2 views
0

У моего приложения есть две вкладки на основном TabViewController.Доля состояния объекта между контроллерами представления в разработке IOS

  • На первой вкладке показан список фруктов, которые мне нравятся.
  • Вторая вкладка отправляет запрос на api во время ввода, ища фрукты с искомым именем.

Если пользователь нажмет на какой-либо фрукт, я покажу подробный вид фруктов, где можно полюбить плод (если он уже понравился, в отличие от него).

Сейчас я пытаюсь добиться чего-то вроде:

  • пользователя для поисковых запросов фруктов
  • Пользователь любит плод
  • пользователь переходит обратно к списку
  • список показывает фрукты с иконкой «как» выделены

Как я могу уведомить список, который я был до выбора строки, изменение состояния o f ячейка (которая была неподтвержденной и теперь понравилась). Как я могу уведомить другой список (на другой вкладке) то же самое?

Спасибо, ребята

EDIT

Я попытаюсь показать реальный образец! Когда вы идете в AppStore и поиск GMAIL First image, looking for an app

Затем вы идете к признакам (графики, я не знаю, в вашей стране), и искать того же приложения

Same app in another view controller

Когда вы загружаете его в любой из этих контроллеров, в то же время другой контроллер показывает тот же статус. Это именно то, что я хочу сделать. download started by me on search list item shows status downloading on others lists

ответ

1

Простой способ - создать один одноэлементный класс с массивом. Пример: У вас есть модель Фрукты:

class Fruit { 
     var name: String? 
     var isLike: Bool? 
} 
class List: NSObject { 
    static let sharedInstance = APIRequest() 
    var fruits = [Fruit]() 
} 

Каждый viewcontroler может получить доступ к его:

var list = List.sharedInstance 

Каждый раз, когда один фрукт понравился или нежелательно, изменить свойства этого фрукта, и с помощью NSNotification уведомлять изменить на orert viewcontrollers. Viewcontroller, получающий уведомление, получит доступ к списку фруктов из одного класса.

+0

Я действительно не думаю, что это хорошая идея, чтобы использовать этот список одноэлементных. У меня нет аргументов, чтобы защитить себя, но я предпочитаю использовать базу данных или что-то вроде этого. Во всяком случае, NSNotification - это то, чего я раньше не знал. +1 для этого –

+1

О, спасибо! Как я сказал, простой способ, к лучшему, вы можете узнать о Key-Value Observing [link] (https: // cocoacasts.com/key-value-observing-kvo-and-swift-3 /) – Dan

+0

В вашем случае, нет необходимости использовать базу данных, это нечто более сложное и время для настройки и использования. – Dan

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