Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 限制UITableView单元格中字符的长度_Iphone_Objective C - Fatal编程技术网

Iphone 限制UITableView单元格中字符的长度

Iphone 限制UITableView单元格中字符的长度,iphone,objective-c,Iphone,Objective C,我必须限制UITableView单元格文本的字符数或长度。因为每个单元格显示一个很长的文本,我必须将这些文本限制为例如140个字符。因为它会导致慢滚动和内存问题等 我正在从SQL DB加载单元格文本: appClass = (AppDelegate *)[[UIApplication sharedApplication] delegate]; readerClass = (Reader *)[appClass.wordList objectAtIndex:indexPath.ro

我必须限制UITableView单元格文本的字符数或长度。因为每个单元格显示一个很长的文本,我必须将这些文本限制为例如140个字符。因为它会导致慢滚动和内存问题等

我正在从SQL DB加载单元格文本:

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

    cell.textLabel.text=readerClass.Name;
谢谢。

诸如此类:

NSRange stringRange = {0, MIN([readerClass.Name length], 140)};
cell.textLabel.text = [readerClass.Name substringWithRange:stringRange];
大概是这样的:

NSRange stringRange = {0, MIN([readerClass.Name length], 140)};
cell.textLabel.text = [readerClass.Name substringWithRange:stringRange];
使用:

当readerClass.Name少于140个字符时,将设置其完整名称;如果readerClass.Name较长,将设置其前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];
}
使用:

当readerClass.Name少于140个字符时,将设置其完整名称;如果readerClass.Name较长,将设置其前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];
}

这应该行得通。它还添加了“…”

NSString *name = readerClass.Name;

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

cell.textLabel.text= name;

这应该行得通。它还添加了“…”

NSString *name = readerClass.Name;

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

cell.textLabel.text= name;

你能详细说明一下吗?为什么不能用你的绳子做一个简单的if。长度不能工作?你能详细说明吗?为什么不能用你的绳子做一个简单的if。长度不行?很高兴能帮上忙!顺便说一句,别忘了选择答案,这对我们的销售代表很有帮助:是的,我在答案中添加了一些示例代码。在这种情况下,我鼓励你问一个单独的问题,这样其他发现这个问题的人就不会感到困惑了。它应该是rangeOfFirstLineBreak.location!=找不到。很高兴能帮上忙!顺便说一句,别忘了选择答案,这对我们的销售代表很有帮助:是的,我在答案中添加了一些示例代码。在这种情况下,我鼓励你问一个单独的问题,这样其他发现这个问题的人就不会感到困惑了。它应该是rangeOfFirstLineBreak.location!=没有找到。