2016-10-05 4 views
3

У меня есть быстрый код 3 преобразования рабочего fine.For изменение функции приложения Я реализовалметод Table View NumberOfSections не вызывался в swift3

NumberOfSections

, но он никогда не звонил. Почему я не понял? Мой контроллер - UIViewController и TableView, добавленный из раскадровки. Источник данных TableView подключен к текущему контроллеру. Я получаю другой метод источника данных под названием как

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

но никогда не называли

func numberOfSections(in tableView: UITableView) -> Int{ 
     return 3 
} 
+0

Вы добавили ключевое слово 'override', как в:' override func numberOfSections ... '? –

+0

MyClass - это подкласс UIViewController, где я устанавливаю datasource для представления таблицы в мой класс, поэтому мне не нужно писать переопределение @MichaelDautermann –

+0

Как упоминал @MichaelDautermann ... проверьте, что у вас есть «переопределить». Я скучаю по Objective-C. –

ответ

2

Вы сказали, что вы создали DataSource в Tableview, но только, чтобы убедиться, попробуйте установить снова в вашем коде снова, как так :

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 
} 
+0

Ваш ответ кажется правильным, но я не знаю, в чем причина. Я проверяю, что может быть причиной, или яблоко что-то изменило! –

+0

похоже, что вы неправильно установили соединение делегата и dataSource вашего TableView и ViewController в раскадровке, иначе вам не нужно будет реализовывать вышеуказанный код. – Wilson

2

Вместо того чтобы делать это нравится:

func numberOfSections(in tableView: UITableView) -> Int 

Делают это так:

func numberOfSectionsInTableView(_ tableView: UITableView) -> Int 
+0

быстро 3 не хотят последний случай ( – djdance

1

Я просто столкнулся с той же проблемой. Добавление UICollectionViewDelegate, UICollectionViewDataSource в мой класс немедленно устранило проблему, компилятор точно рассказал о том, чего я не видел, и т. Д.

Похоже, что UICollectionView в Swift предварительно проверяет соответствие на основе протокола, а не на методе -базис. Например, моя реализация «numberOfSections» была прекрасной, но просто не вызывалась без декларации соответствия.

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