Клас повинен успадкувати від батьківського класу, перш ніж відповідати протоколу. В основному це два способи.
Один із способів - зробити так, щоб ваш клас успадкував NSObject
і дотримувався UITableViewDataSource
спільного. Тепер, якщо ви хочете змінити функції в протоколі, вам потрібно додати ключове слово override
перед викликом функції, як це
class CustomDataSource : NSObject, UITableViewDataSource {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
return cell
}
}
Однак іноді ваш код стає безладним, оскільки у вас може бути багато протоколів, яким слід відповідати, і кожен протокол може мати кілька функцій делегування. У цій ситуації ви можете відокремити код, що відповідає протоколу, від основного класу за допомогою extension
, і вам не потрібно додавати override
ключове слово у розширення. Тож еквівалент коду буде вище
class CustomDataSource : NSObject{
// Configure the object...
}
extension CustomDataSource: UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
return cell
}
}