Как указано в документации Apple , тип возврата dequeueReusableCell равен UITableViewCell .
Apple Documentation
Return Value: A UITableViewCell object with the associated identifier or nil if no such object exists in the reusable-cell queue.
Ваши пользовательские классы ячеек должны наследоваться от UITableViewCell, и чтобы иметь возможность использовать экземпляр вашей пользовательской ячейки, вам необходимо преобразовать возвращаемый UITableViewCell dequeReusableCell в пользовательский тип ячейки вашего желания.
let cell = tableView.dequeueReusableCell(withIdentifier: "customCellIdentifierCell", for: indexPath) as! YourCutsomTableViewCell
За настройку каждая ячейка отвечает за свою собственную конфигурацию.У вас должна быть функция (вы можете использовать протоколы или наследовать от суперкласса) и внутри cellForRowAtIndexPath, после ее приведения, вызвать функцию установки.
customCell.setup() //you can add some parameters if its needed