Ios 如何在UIPickerView中进行单词换行

Ios 如何在UIPickerView中进行单词换行,ios,objective-c,uilabel,uipickerview,Ios,Objective C,Uilabel,Uipickerview,我有一个UIPickerView,我想把文字换行 这是我的密码: - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { if (component == 0) { UILabel *lView = (UILabel *)view; if (!tVie

我有一个UIPickerView,我想把文字换行

这是我的密码:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    if (component == 0) {
    UILabel *lView = (UILabel *)view;

    if (!tView) {
        tView = [[UILabel alloc] init];
        [tView setFont:[UIFont systemFontOfSize:15]];
        tView.numberOfLines = [categorie count];
    }
    tView.text = [categorie objectAtIndex:row];
    return tView;
    }
    else {
        UILabel *lView = (UILabel *)view;

        if (!sView) {
            sView = [[UILabel alloc] init];
            [sView setFont:[UIFont systemFontOfSize:15]];
            sView.numberOfLines = [subCat count];
        }
        sView.text = [subCat objectAtIndex:row];
        return sView;
    }
}

我尝试设置sView.numberOfLines=0;(这是您通常将UILabel设置为word wrap或多行的方式),但这不起作用。

让我解释一下代码中发生的情况,例如,让我们想象一下,
subCat
数组包含两个字符串对象:“一”、“二”

你需要这样的东西:

sView.text = [subCat componentsJoinedByString:@"\n"];

偏离主题,但在主题上:更多描述性变量:DaulVar只是数组,不是代码片段难以理解,而是您应该考虑我所建议的编写代码的最佳实践。从长远来看,它确实有助于我们习惯像这样的i di组件,它通过字符串@“\n”连接,它所做的是将第一个组件复制到所有其他组件上。例如,如果第一行是“一”,那么它将为所有其他行显示“一”,您在
-(CGFloat)pickerView:(UIPickerView*)pickerView rowHeightForComponent:(NSInteger)component
委托函数中返回的值是什么?可能您返回的高度不够,标签太小,无法显示超过1个字符串?您是什么意思?我将委托设置为self,但没有设置高度。UIPickerViewDelegate具有可选功能
rowHeightForComponent
,您可以在其中返回每个选择器单元格的高度
sView.text = [subCat componentsJoinedByString:@"\n"];