2015-11-14 3 views
0
class HomeViewController: UIViewController, UITableViewDelegate,  UITableViewDataSource 
{ 

code 

} 

я удалил эти два класса/интерфейсы UITableViewDataSource,UITableViewDelegate при использовании TableViewController. все еще его рабочий штраф. ПОЧЕМУ?интерфейс TableView Контроллер

class HomeViewController: UIViewController 
{ 

code 

} 

так почему мы используем эти классы?

+0

Вы используете статические ячейки tableView или динамические ячейки с использованием прототипа? –

+0

Они не классы, они протоколы – vadian

ответ

0

Он по-прежнему работает, потому что UITableViewController уже реализует делегатов UITableViewDelegate & UITableViewDataSource :)

+0

Итак, почему мы используем эти классы, какова цель его использования? – Uzair

+0

Вы можете использовать UITableView самостоятельно. –

+0

'UITableViewController' - это viewcontroller, который уже содержит' UITableView' внутри него. Но когда вам нужен пользовательский 'UIViewController', который имеет UITableView и многие другие компоненты пользовательского интерфейса, вам нужно' UITableViewDatasource' и 'UItableViewDelegate' самостоятельно. –

0

UITableViewController фундаментально построена для управления видом таблицы. Следовательно, он реализует UITableViewDelegate и UITableViewDataSource по умолчанию. Ваш HomeViewController является просто подклассом UIViewController. Поэтому он не несет ответственности за управление табличным представлением. Так что это не проблема, если она не соответствует UITableViewDelegate и UITableViewDataSource.

+0

'HomeViewController' наследуется от' UIViewController', а не 'UITableViewController' – Mika

+0

Это именно то, что я сказал. –

0

Когда у вас есть табличное представление в UIView, вы должны следовать определенным правилам, например, рассказывать таблице о количестве строк для отображения. Добавляя UITableViewDelegate, UITableViewDataSource после того, как имя класса сообщает xCode, что вы хотите следовать правилам таблицы, чтобы xCode мог следить за всеми необходимыми правилами.

В вашем случае вы следовали всем правилам: вы связали источник данных, а делегат с вашим объявлением HomeViewController реализовал необходимые методы, поэтому он работает, вы просто делаете это, не сообщая IDE и компилятору.

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

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