2012-04-20 3 views
2

У меня есть MainViewController, и я хочу добавить к нему два UITableView, каждый с разными ячейками. Но я не хочу засовывать мой код MainViewController, проверяя методы делегата таблицы, которые он представляет, а затем воздействует на него. Это становится слишком грязным.Когда в подкласс UITableView?

Так я думал, что подкласс UITableView и дайте ему справиться с cellForRow и другие методы таблиц сама по себе, и таким образом, когда я хочу, чтобы добавить таблицу в MainViewController, все, что я должен был бы это

CustomTable *customTable = [[CustomTable alloc] init]; 
[self.view addSubview:customTable]; 

, и все методы делегата будут обрабатываться в этом классе, оставив беспорядок MainViewController свободным.

Я подхожу к этому неправильно? Должен ли я подклассифицировать UITableViewController? Какая разница?

+1

Почему вы не создаете два подкласса NSObject, реализующих UITableViewDelegate/DataSource, и для каждого вашего MainViewController вы делаете один из этих классов и позволяете им обрабатывать таблицы с информацией, которую вы предоставляете? – EmilioPelaez

+0

Я не понимаю .. У меня только 1 MainViewController и 2 tableViews. – Snowman

+0

Предположим, я создаю обычный UITableView. Я могу назначить другой подкласс NSObject для обработки методов делегирования этой таблицы? Это то, что вы говорите? Как мне это сделать? – Snowman

ответ

10

Когда подклассы UITableView? Не сейчас.

Создайте два класса, которые являются переменными-членами вашего контроллера вида. Укажите делегатов представления таблиц в каждом из двух новых классов.

В Cocoa вы, как правило, комбинируете классы, а не наследуете их, как обычно, на Java и C#.

+1

Жаль, что я мог бы проголосовать за это дважды! очень легко попасть в колею, где делегат представления таблицы является владельцем контроллера представления. Нарушение этой привычки делает прекрасный ответ здесь. – danh

+0

Можете ли вы объяснить немного больше тем, что вы здесь имеете в виду? Как я буду делать это – MobileMon

+0

Вы имеете в виду синтаксис «@class»? – MobileMon

5

В 3-х лет профессиональной работы в качестве Objective-C программист, мне не нужно подкласс UITableView раз, узоры, какао в зависимости, - MVC и delegations (с использованием protocols), только простой, но сильный достаточно. И populating a tableview is just one of the best examples.

Убедитесь, что вы понимаете все эти темы, так как в противном случае вы будете постоянно бороться с каркасом.

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