2016-04-18 23 views
5

Ho un UIPickerView come posso renderlo multilinea? Ho un lungo testo.Come posso rendere UIPickerView Multiline in rapido?

Ecco il mio codice.

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    var returnResult: String = "" 
    if pickerView.tag == 1 { 
    //This picker has long text 
     let position: UInt = UInt(row) 
     returnResult = list.objectAtIndex(position).Description.Value; 
    } else if pickerView.tag == 2 { 
     returnResult = questionTwoOptions[row] 
    } else if pickerView.tag == 3 { 
     returnResult = questionThreeOptions[row] 
    } else { 
     returnResult = "" 
    } 
    print(returnResult) 
    return returnResult 
} 

Ecco il mio viewForRow Methode

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView { 
    let label = UILabel(frame: CGRectMake(0, 0, 400, 44)); 
    label.lineBreakMode = .ByWordWrapping; 
    label.numberOfLines = 0; 
    //view!.addSubview(label) 
    return label; 
} 
+1

Implementare il viewForRow' delegato ' metodo e restituire un 'UILabel' secondo necessità. – rmaddy

risposta

10

Si può provare in questo modo con la visualizzazione personalizzata

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView { 
    let label = UILabel(frame: CGRectMake(0, 0, 400, 44)); 
    label.lineBreakMode = .ByWordWrapping; 
    label.numberOfLines = 0; 
    label.text = arr[row] 
    label.sizeToFit() 
    return label; 
} 

Se si dispone di contenuto che può assumere più di due righe è anche possibile impostare l'altezza della riga

func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { 
    return 80 
} 
0

Stai andando ad avere per cambiare il rowHeightForComponent (UIPickerView)

Qualcosa di simile:

func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat 
    { 
     return 70.0 
    } 

E tu sei sarà in grado di vederlo in multiline, tutto il resto che hai fatto bene.