Can I use a single prototype cell in multiple tableViews?

You can use same prototype cell in different view controllers, you just need to dequeue it from the tableview of controller in which you designed it.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  let viewControllerInWhichCellWasDefined = tabBarController?.viewControllers?[0]   
  let cell = viewControllerInWhichCellWasDefined.tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
  return cell
}

K.. I got it. First of all,

I can NOT use one prototype cell in two different tableview. But, I can use the same tableViewCell subclass in two different tableviews.

To achieve it, one just have to copy the prototype cell from one controller and paste it as a prototype cell of the other tableview. Class of the pasted tableview remains the same. Just change the reuseIdentifier. and use it.

Edit: If your cell has a fairly complicated UI, then it makes more sense to create separate xib for the cell alone. Then programmatically register the xib with the table view. That way, you will have only one copy of the cell and much better at maintaining it when there are changes to the ui.