     }
     
     private func configureFirstSelection() {
+        // Configure the first row selection: If some pre-selected row was set, we select it, else we select the nearby to middle at all.
         let rowToSelect = currentSelectedRow != 0 ? currentSelectedRow : Int(ceil(Float(numberOfRowsByDataSource) / 2.0))
         selectedNearbyToMiddleRow(rowToSelect)
     }

    }
    
    public func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
        let partialRow = Float(targetContentOffset.memory.y / rowHeight)
        var roundedRow = Int(lroundf(partialRow))
        
        if roundedRow < 0 {
            roundedRow = 0
        } else {
            targetContentOffset.memory.y = CGFloat(roundedRow) * rowHeight
        }
        
        currentSelectedRow = roundedRow % numberOfRowsByDataSource

        delegate?.pickerView(self, didSelectRow: roundedRow % dataSource!.numberOfRowsInPickerView(self))
    }
    
    public func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
        if orientationChanged {
            selectedNearbyToMiddleRow(currentSelectedRow)
            orientationChanged = false

    public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let pickerViewCell = tableView.dequeueReusableCellWithIdentifier(pickerViewCellIdentifier, forIndexPath: indexPath) as! SimplePickerTableViewCell
        
        // As the first row have a different size to fit in the middle of the PickerView and rows below, the titleLabel position must be adjusted.
        if indexPath.row == 0 {
            let centerY = (self.frame.height / 2) - (rowHeight / 2)
            pickerViewCell.titleLabel.frame = CGRect(x: 0.0, y: centerY, width: frame.width, height: rowHeight)
