2016-04-18 8 views
5

Mam UIPickerView, w jaki sposób mogę zrobić multiline? Mam długi tekst.Jak mogę sprawić, aby mój UIPickerView Multiline był szybki?

Oto mój kod.

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 
} 

Oto moja 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

Wdrożenie 'viewForRow' delegata i zwróć 'UILabel' w razie potrzeby. – rmaddy

Odpowiedz

10

Można spróbować jak to z widoku niestandardowym

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; 
} 

Jeśli masz treści, które mogą trwać dłużej niż dwie linie można również ustawić wysokość wiersza

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

Będziesz musiał zmienić rowHeightForComponent (UIPickerView)

Coś jak:

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

I jesteś będzie w stanie zobaczyć to w multilinii, całą resztę dobrze wykonałeś.

Powiązane problemy