У вас есть три подхода, каждый из которых имеет свои плюсы и минусы.Я собираюсь дать вам общий обзор и позволить вам перейти к довольно полной документации Apple для деталей.Надеюсь, я могу дать вам правильные термины в Google для получения более конкретной помощи.
Подход, который @dredful довольно умело описывает, - это , чтобы иметь дескриптор "другого" контроллера (ов) представления и вызывать методына них напрямую .Это прекрасно работает, но это может сбивать с толку и обременительно передавать указатели всем вашим контроллерам, и обход иерархии представления для получения нужного контроллера действительно может быть очень сложным.
Второй подход - Наблюдение значения ключа .Вы можете зарегистрировать один контроллер представления, чтобы «наблюдать» за определенным ключом (именованным свойством) другого контроллера представления и запускать определенный селектор, когда с ним происходят разные вещи.Это довольно волшебно и приятно, хотя в какой-то момент вам нужно иметь указатели на оба контроллера в одно и то же время, что не полностью освобождает от недостатков метода «вызвать его напрямую», описанного выше.Это также своего рода неудачное соединение управления просмотром и данными, своего рода разрывы MVC.
Третий подход - с использованием NSNotificationCenter .Класс может опубликовать уведомление, и любой другой объект, который регистрируется для прослушивания такого рода уведомлений, может быть запущен, когда это произойдет.Это хорошо, потому что у вас может быть МНОЖЕСТВО различных объектов, добавляющих элементы в корзину, и они могут просто выстрелить в центр уведомлений заметку (даже передавая ей объект или произвольные данные, если он этого хочет), и представление корзины может использовать эти уведомления,лови пропущенные предметы и делай свое дело, не обращая особого внимания на то, кто с ним разговаривает.Он хорошо разделяет отдельные части вашего приложения.Недостатком является то, что в этом есть некоторые накладные расходы, и любой селектор, выполняемый классом, использующим уведомления, происходит синхронно, поэтому вы не можете скрыть сетевую активность или какой-либо другой длинный процесс там.