1

UITableViewのセルテキストの文字数または長さを制限する必要があります。各セルには非常に長い長いテキストが表示されるため、これらのテキストをたとえば140文字に制限する必要があります。スクロールが遅くなったり、メモリの問題などが発生するため...

SQL DBからセルテキストを読み込んでいます:

    appClass = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    readerClass = (Reader *)[appClass.wordList objectAtIndex:indexPath.row];

    cell.textLabel.text=readerClass.Name;

ありがとう。

4

3 に答える 3

4

使用する:

cell.textLabel.text = (readerClass.Name.length > 140 ? [readerClass.Name substringToIndex:140] : readerClass.Name);

readerClass.Nameこれにより、140文字未満の場合はフルに設定され、それより長い場合は最初の140文字が設定されます。

また、UITableViewCellにUILabelがあり、...テキストが切り捨てられると自動的に追加(省略記号)されると想定しています。そうでない場合は、省略記号を自分で追加できます。

cell.textLabel.text = (readerClass.Name.length > 140 ? [[readerClass.Name substringToIndex:137] stringByAppendingString:@"..."] : readerClass.Name);

最初の行だけを取得することについて質問したので、この質問に追加してください。

// get first line break range
NSRange rangeOfFirstLineBreak = [cell.textLabel.text rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]];
// check if first line break range was found
if (rangeOfFirstLineBreak.location == NSNotFound) {
    // if it was, extract the first line only and update the cell text
    cell.textLabel.text = [cell.textLabel.text substringToIndex:rangeOfFirstLineBreak.location];
}
于 2012-12-14T14:03:11.800 に答える
0

このようなもの:

NSRange stringRange = {0, MIN([readerClass.Name length], 140)};
cell.textLabel.text = [readerClass.Name substringWithRange:stringRange];
于 2012-12-14T14:02:54.897 に答える
0

これは機能するはずです。また、「...」を追加します

NSString *name = readerClass.Name;

if( name.length > 140 ){
    name = [place substringToIndex:140];
    name = [NSString stringWithFormat:@"%@...", name];
}

cell.textLabel.text= name;
于 2012-12-14T14:04:00.157 に答える