Я работал над тем, чтобы переместить одно из моих приложений из процесса «shared appdelegate», который, как представляется, был нахмурился, несмотря на его чрезмерное использование. Я пытаюсь настроить методы протокола для того, что хочу, но у меня нет нулевой удачи. мой вопрос в том, можете ли вы даже сказать, что один диспетчер представлений посылает запросы делегатов нескольким классам? от того, что я обнаружил, это не похоже на то, что вы можете. что не имеет смысла, потому что я думал, что это была цель делегатов и протоколов с mvc. теперь просто для того, чтобы уточнить, я знаю, что у вас может быть один элемент управления представлением в качестве делегата для нескольких других контроллеров viewcontrollers. но это не то, что я прошу. для простого примера, скажем, у вас есть шаблон флип-утилиты для яблок. кнопка «done» просто вызывает метод делегата mainvc, чтобы отклонить его. теперь позволяет сказать, что мы добавили новый класс под названием ...Несколько делегатов в объекте-c
@interface NewClass : NSObject <TheOtherDelegate>
и был метод делегата ...
- (void)doSomething
{
NSLog(@"The Delegate did something...");
}
мы можем иметь кнопку на flipsideviewcontroller, что мы хотели бы назвать это делегировать метод, но по-прежнему держать кнопку «done» на методе делегата в mainviewcontroller, который отклоняет его?
что, будучи сказанным, я собрал быстрый проект, чтобы увидеть, будет ли это работать, а это не так. я наткнулся на «ответ», который говорит, что вы должны создать экземпляр класса сначала вы хотите быть делегатом ...
NewClass *myDelegate = [NewClass alloc] init]
[fillInMethodHere setDelegate:myDelegate];
не знаю, почему он получил правильный ответ чек, потому что само собой разумеется, это не Работа. есть что-то, чего я не вижу? Я просмотрел ib, чтобы узнать, есть ли какое-то «делегированное» соединение где-то, но я ничего не мог найти.
на боковой ноте, поскольку я работал в своем рабочем проекте, я прочитал предложение об удалении #import
и добавлении @class
. снова, что сломало все виды вещей. странное дело, прежде чем делать это, что я до сих пор работал и строил хорошо. когда я удалил новый @class
и прокомментировал #import
. xcode внезапно дал мне ошибку «не может найти замедление протокола для ...», но все же он работал несколько секунд назад. мне нужно будет удалить код протокола и снова добавить его, чтобы он снова работал. очень большой.
любая помощь будет оценена. все, что читается в документах, google, stack и т. д., которые говорят, что что-то должно работать, не в реальном проекте.
Вы уверены, что импортировали обоих делегатов, используя эту функцию < >? Стэнфорд сделал демоверсию, которая работала с 2 делегатами. Я могу связать вас с ним – TheNavigat
У вас не может быть нескольких делегатов, потому что делегаты принимают решения для делегирования. Что делать, если несколько делегатов должны были не согласиться? Я думаю, что вы понимаете делегата как своего рода наблюдателя, который просто информирован о вещах, но это неправильно. Шаблон Observer, реализованный в Cocoa с использованием 'NSNotificationCenter' и друзей, отличается. –
Я уверен, что вы можете получить несколько делегатов. Вы говорите, что у вас есть несколько делегатов того же типа. Это полностью отличается от того, что у нескольких делегатов есть общее – TheNavigat