Как обрабатывать несколько делегатов - PullRequest
7 голосов
/ 19 марта 2010

В моем приложении есть представление, которое делает практически все, и мне это нравится. Проблема, однако, в том, что он реализует 5 или 6 разных делегатов, что выглядит немного грязно.

У меня вопрос: должен ли контроллер представления реализовывать всех делегатов? или есть какой-то способ разделить код на разные файлы (без необходимости делать основную реструктуризацию или переписать)?

Вот все делегаты, которых я реализую:

@interface MyView : UIViewController <UIScrollViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate, MFMailComposeViewControllerDelegate>

1 Ответ

12 голосов
/ 19 марта 2010

Нет проблем. Решение - категории Objective-C. Вы можете поместить это в отдельный исходный файл:

#import "MyView.h"
@implementation MyView (UIScrollViewDelegate)
// scroll view delegate method implementations go here
@end

Хорошим условием является присвоение этому файлу имени MyView + UIScrollViewDelegate.m. Методы, которые вы здесь определяете, будут вести себя так же, как если бы они были определены в «MyView.m».

Нет необходимости, чтобы название категории соответствовало названию протокола. Вы можете сделать это с любым набором методов и использовать любое имя категории, которое вам нравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...