是否可以在tableview的标题中将左侧和右侧的文本对齐?

时间:2013-12-04 04:03:46

标签: ios objective-c uitableview sections

我正在尝试将一些文本对齐到部分标题的左侧,将不同的文本放在同一标题的右侧。

在使用工具栏的时候,我使用了一个灵活的按钮来向左和向右推动其他按钮,我想知道是否有类似的章节标题?

更多背景是我在每个不同的日子输入的每条信息都在我的tableview中有不同的部分。在标题栏的左侧,我想要输入日期(11月20日星期三),在右侧,我想要多少天前(20天前)。

以下是我目前使用的代码:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{    
    if (section == 0) {
        return nil;
    }
    else {
        // This gets the day the data was entered
        NSDate * date = [_sectionDates objectAtIndex:(section-1)];

        NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"EEE"];
        NSString * dateDay = [formatter stringFromDate:date];
        [formatter setDateFormat:@"MMM"];
        NSString * dateMonth = [formatter stringFromDate:date];

        NSDateComponents * components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date];

        NSInteger dateOfDay = [components day];

        NSTimeInterval diff = [[NSDate date] timeIntervalSinceDate:date];
        NSInteger days = diff / (60.0 * 60.0 * 24);

        NSString * dateScript;

        if (dateOfDay < 21 && dateOfDay > 4) {
            dateScript = @"th";
        }
        else if (dateOfDay % 10 == 1) {
            dateScript = @"st";
        }
        else if (dateOfDay % 10 == 2) {
            dateScript = @"nd";
        }
        else if (dateOfDay % 10 == 3) {
            dateScript = @"rd";
        }
        else {
            dateScript = @"th";
        }


        NSString * header;

        if (days < 2) {
            header = [NSString stringWithFormat:@"%@ %i%@ %@ - %@", dateDay, dateOfDay, dateScript, dateMonth, days == 0 ? bToday : bYesterday];
        }
        else {
            header = [NSString stringWithFormat:@"%@ %i%@ %@ - %i %@", dateDay, dateOfDay, dateScript, dateMonth, days, bDaysAgo];
        }

        return header;
    }
}

此时此输出如下:

| 12月4日星期三 - 今天_ _ __ _ ___ |

我希望它是这样的:

| Wed Wed Dec_ _ __ _ __ _ _今天|

1 个答案:

答案 0 :(得分:2)

您无法使用titleForHeaderInSection执行此操作。您需要实现viewForHeaderInSection。返回带有两个标签的视图 - 一个在左边,一个在右边。当然,如果这是您想要的,您还需要复制标准表部分标题的默认外观。