Table 像笔记应用一样查看单元格

Table view cell like Notes App

通过我的搜索,我无法找到我的答案。

基本上我有一个像view controller这样的基础笔记。我想要像笔记一样的效果,其中第一行是笔记的标题,body 的其余部分在尾随的副标题中。

我是如何设置的:

NSString *note = nil;
if (tableView == self.tableView) {
    note = [noteArray objectAtIndex:indexPath.row];
}
NSString *date = [dateArray objectAtIndex:indexPath.row];
NSInteger charnum = [note length];
if (charnum >= 22) {
    cell.textLabel.text = [[note substringToIndex:18] stringByAppendingString:@"..."];
}
else{
    cell.textLabel.text = note;
}

[cell.detailTextLabel setText:[NSString stringWithFormat:@"%@ - %@", date, [note substringFromIndex:18]]];
[cell.detailTextLabel setNumberOfLines:1];

现在它读到 18 个字符,然后……然后字幕会自动读取其余字符。

我将如何为此设置 Title/Header 然后 body?

所以我想通了。如果有人感兴趣,我是怎么做到的。

这是在 textView 中正确设置的组合,如下所示:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

    NSMutableString *newString = [NSMutableString stringWithString:self.textView.text];
    [newString replaceCharactersInRange:range withString:text];
    NSString *trimmed = [newString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
    NSRange newLineRange = [trimmed rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]];
    if(newLineRange.length > 0)
    {
        self.textView.text = [trimmed substringToIndex:newLineRange.location];
    }
    else {
        self.textView.text = trimmed;
    }

    return YES;

}

将第一行保存为 "title"

接下来在我的 tableView 中,我将显示设置如下:(我将提供我的整个单元格调用而不是我更改的内容)。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    [cell setSelectionStyle:UITableViewCellSelectionStyleDefault];
    [cell.textLabel setNumberOfLines:1];
    [cell.textLabel setLineBreakMode : NSLineBreakByTruncatingTail];
    [cell setClipsToBounds:YES];

    // Configure the cell label.
    [cell.textLabel setTextColor: [UIColor whiteColor]];
    [cell.textLabel setFont:[UIFont boldSystemFontOfSize:18]];

    //Cell Base color
    [cell.contentView.superview setBackgroundColor:[UIColor colorWithRed:0.271 green:0.271 blue:0.271 alpha:1]];

    //Cell selection color
    UIView *cellColor = [[UIView alloc] init];
    [cellColor setBackgroundColor:[UIColor colorWithRed:0.176 green:0.176 blue:0.176 alpha:0.95]];
    [cell setSelectedBackgroundView:cellColor];

    //Cell border
    [cell.layer setBorderColor:[UIColor colorWithRed:30/255.0 green:30/255.0 blue:30/255.0 alpha:1.0].CGColor];
    [cell.layer setBorderWidth:1.5f];

    //Setting the first line of cell.
    NSString *note = nil;
    if (tableView == self.tableView) {
        note = [noteArray objectAtIndex:indexPath.row];
    }
    cell.textLabel.text = note;

    //Subtitle line.
    NSRange startRange = NSMakeRange(1, 0);
    NSRange titleRange = [note lineRangeForRange:startRange];
    NSString *titleString = [note substringFromIndex:titleRange.length];
    titleString = [titleString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
    //titleString = [titleString stringByReplacingOccurrencesOfString:@"\r\n" withString:@""];

    //Setting the date.
    NSString *date = [dateArray objectAtIndex:indexPath.row];

    [cell.detailTextLabel setNumberOfLines:1];

    //New method of having two seperate colors for the detail string.
    NSAttributedString *scoreAttributedString = [[NSAttributedString alloc] initWithString:date attributes:@{NSForegroundColorAttributeName: [UIColor colorWithRed:0.20 green:0.67 blue:0.86 alpha:1.0]}];
    NSAttributedString *domainAttributedString = [[NSAttributedString alloc] initWithString:titleString attributes:@{NSForegroundColorAttributeName: [UIColor lightTextColor]}];

    NSMutableAttributedString *detailMutableAttributedString = [[NSMutableAttributedString alloc] init];
    [detailMutableAttributedString appendAttributedString:scoreAttributedString];
    [detailMutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@" "]];
    [detailMutableAttributedString appendAttributedString:domainAttributedString];

    [[cell detailTextLabel] setAttributedText:detailMutableAttributedString];  
}

希望这对某人有所帮助。