2008-11-29 4 views
2

Я в гипотетической ситуации, когда мне нужно перечислить учащихся в школу. У меня есть один контроллер табличного представления, который имеет несколько разделов, представляющих школу. У каждой школы есть последующие ученики. Теперь у меня есть требование предоставить пользователю возможность просматривать всех учеников для определенной школы, щелкнув имя школы в верхнем уровне моего навигационного контроллера.Подклассификация UIViewController, когда и когда не до

Вопрос заключается в том, чтобы развернуть мой текущий «StudentsViewController» и добавить сложную логику, чтобы позволить ему отображать учащихся отдельных школ, или вы бы рекомендовали специалистам новый класс для обработки этой таблицы?

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

Что рекомендуют эксперты по этому вопросу?

ответ

1

Я думаю, что это будет зависеть от модели, которую вы используете для хранения ваших данных. Допустим, у вас есть массив массивов, (массив школ, каждая школа имеет множество учеников).

В этом случае я бы придерживался одного tableController.

Логика не должна быть волосатой, если ваш дизайн модели прост, и я думаю, что в этом случае он будет более чистым и «более правильным», чем несколько подклассов. Не забудьте, что система пропускает вам номер NSIndexPath. У вас есть номера разделов и строк. (Школа и Студент) indexPath.section и indexPath.row

2

Я думаю, что проще всего сделать было бы иметь один класс, который обрабатывает массив школ. Если этот массив содержит только один элемент, вы можете (необязательно) не иметь названия, отображаемого для отдельного раздела. В противном случае все разделы имеют названия.

Поместите все свои школы в массив, и когда нужно отобразить одну школу, вставьте ее в массив самостоятельно и нажмите на нее в свой контроллер.

Мы делаем очень похожие вещи в одном из наших приложений, в основном таким же образом.