             cell.valueField.tag = indexPath.row
             cell.valueField.removeTarget(self, action: #selector(didChange(textField:)), for: .allEvents)
             cell.accessoryType = .none
+
+            if !self.isEditable {
+                cell.isUserInteractionEnabled = false
+            }
 
             return cell
         }

                cell.clearButton!.tag = indexPath.row
            }

            return cell
        case let actionField as ActionField:
            let cell = tableView.dequeueReusableCell(withIdentifier: "Action")
                ?? UITableViewCell(style: .default, reuseIdentifier: "Action")

            cell.textLabel?.text = actionField.label

            return cell
        case let selectField as SelectField where selectField.options.count <= 2:

        self.tableView.register(BoolFieldTableViewCell.self, forCellReuseIdentifier: BoolFieldTableViewCell.identifier)
        self.tableView.register(SegmentedControlTableViewCell.self, forCellReuseIdentifier: SegmentedControlTableViewCell.identifier)

        if self.isEditable {
            self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancel))
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
        }
        else {
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(cancel))
        }
    }

    open func submit() {
