2011-01-04 4 views
1

Я создаю приложение с UITableView.Протоколы и делегаты iOS. Основные вопросы

Данные будут отправляться из XML, полученного по сети. Я использую NSXMLParser для этого, и он работает. Я использовал мой контроллер Tableview в качестве делегата для этого, так что реализует протокол к нему:

@protocol NSXMLParserDelegate; 
@interface MainView : UITableViewController <NSXMLParserDelegate> 

Теперь это работает отлично, как я nslogged в результате разбора. Теперь я хочу заполнить NStableView, поэтому в Чтении я обнаружил, что мне нужно добавить источник данных и делегировать.

UITableViewDataSource 

и

UITableViewDelegate 

оба из которых являются протоколы.

Как бы я сделал это на одном классе? Можно ли реализовать более одного протокола с одним классом? следует ли перенести делегирование анализатора на другой объект и использовать этот контроллер для этой цели?

В основном вопрос заключается в том, что является лучшим способом для этого?

спасибо

+0

Я обнаружил, что могу фактически выполнять протоколы на одном классе, но теперь я все еще хочу знать, подходит ли это для этого, поскольку этот вид, похоже, идет против MVC – cromestant

ответ

2

Конечно, вы можете реализовать столько протоколов в классе, как вы хотите:

@interface MainView : UITableViewController <NSXMLParserDelegate, UITableViewDataSource, UITableViewDelegate> 

Это «правильный» способ сделать это? Я не думаю, что есть «правильный» ответ на этот вопрос. Пурист может сказать «нет». Я бы сказал, делайте это там, где это имеет смысл, но ошибайтесь на том, чтобы разбить его на отдельные классы. Например, если ваш контроллер представления представляет собой простое меню, то для вашего контроллера представлений также будет вашим делегатом представления данных и источником данных; нет никакого преимущества разбить его на несколько классов.

Если вам нужно разобрать XML, моя интуиция подсказывает, что он начинает немного усложняться. Может быть, есть класс данных, который реализует источник данных и XML-парсер и класс контроллера?

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