2012-06-19 2 views
5

Я узнал о делегировании и источниках данных для программирования iOS и должен спросить, есть ли какие-то различия, которые вам нужно делать, когда вы делаете протокол источника данных, чем протокол делегата?Делегирование и источник данных iOS

Также как реализовать делегат для многих объектов в одном делегате? Пример одного объекта со множеством уникальных пользовательских предупреждений.

--Edit--

В качестве примера для второй части:

Один объект, который имеет четыре различных оповещений каждый с различными кнопками. Поскольку объект должен определять, как каждая кнопка работает, будучи делегатом для предупреждений. Как установить методы делегата для определения каждого предупреждения?

ответ

14

Оба типа объектов более или менее ведут себя одинаково, это вопрос того, что они делают, и это вопрос.

Объект типа делегата отвечает на действия, которые принимает другой объект. Например, протокол UITableViewDelegate имеет такие методы, как didSelectRowAtIndexPath, для выполнения действий при выборе пользователем определенной строки в таблице.

Принимая во внимание, что объект типа источника данных передает данные другому объекту. Например, протокол UITableViewDataSource имеет такие методы, как cellForRowAtIndexPath и numberOfRowsInSection, которые определяют, что должно отображаться в таблице.

Нет никакой жесткой разницы между двумя в плане компиляции, это просто стиль кодирования, чтобы сделать то, что делает объект, что очень ясно для пользователя кода.

EDIT:

Чтобы ответить на ваш второй вопрос: если вы хотите, чтобы каждый сигнал тревоги реагировать по-разному, вам нужно будет написать другой делегат для каждого предупреждения. Например, если одно из ваших предупреждений является предупреждением о сохранении (возможно, вы собираетесь перезаписать файл, и он появится, чтобы подтвердить, что пользователь хотел бы сделать), у вас будет такой объект, как:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate> 
@end 

И в @implementation для SaveConfirmAlertDelegate вы должны реализовать надлежащую функцию сохранения, в зависимости от того, какую кнопку пользователь нажал в предупреждении.

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

Надеюсь, что это прояснит ситуацию

+0

Спасибо за объяснение моей первой проблемы. Я добавил пример на мой вопрос. – RMDan

+0

@ RMDan Я добавил дополнительное объяснение для вашего второго вопроса, я надеюсь, что это немного уладится. –

+0

Это имеет смысл. Мне нужно будет больше узнать о делегировании, но это начинает иметь смысл. – RMDan

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