detailTextLabel文本不显示UITableViewCellStyleValue1的单元格

时间:2015-08-14 15:19:49

标签: ios objective-c uitableview

我想在单元格的右侧显示详细标签文本,但我没有成功。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    static NSString *CellIdentifier =@"Cell";
    UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    cell.textLabel.text = [(AGSGraphic *)[_radios objectAtIndex:indexPath.row] attributeForKey:@"radio];

    NSNumber *timestamp = [[_radios objectAtIndex:indexPath.row] attributeForKey:@"date"];
    NSDate *newDate = [NSDate dateWithTimeIntervalSince1970:[timestamp doubleValue] / 1000];
    NSString *date =[NSString stringWithFormat:@"%@", newDate];

    NSDateFormatter *f = [[NSDateFormatter alloc] init];
    [f setDateFormat:@"yyyy-MM-dd"];
    NSDate *startDate = [NSDate date];
    NSDate *endDate = [f dateFromString:date];
    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [gregorianCalendar
                                    components:NSMinuteCalendarUnit
                                    fromDate:endDate
                                    toDate:startDate
                                    options:0];
    NSDateComponents *components2 = [gregorianCalendar components:NSHourCalendarUnit fromDate:endDate toDate:startDate options:0];
    //NSDateComponents *components3 = [gregorianCalendar components:NSDayCalendarUnit fromDate:endDate toDate:startDate options:0];
    NSInteger mins = [components minute];
    NSInteger hours = [components2 hour];
    //NSInteger days = [components3 day];
    cell.detailTextLabel.text = @"test";
    cell.detailTextLabel.frame.origin.y, 44.0, 44.0);
    return cell;
}

当我使用时:

initwithstyle:UITableViewCellStyleSubtitle

它有效,但我不想要标题下的细节标签,我希望它在标题的右侧。我尝试将样式更改为UITableViewCellStyleValue1,但它什么也没做。

3 个答案:

答案 0 :(得分:1)

如果您使用

UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

您的单元格已经初始化,dequeue采用故事板的配置(这就是为什么改变init的样式并不适合你),更改它使用故事板正确的工具并选择{{1表视图单元格样式下的{}或Left Detail取决于您希望如何显示数据

enter image description here

并删除此行:

Right Detail

而且:

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

答案 1 :(得分:0)

您是否尝试在cell之前检查init,例如

UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}

答案 2 :(得分:0)

在故事板的表格视图中,将单元格设置为Right Detail并将重用标识符设置为某些内容。然后你的cellForRow的开头部分将如下所示:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:@"TheReuseIdentifierYouSet"];
    // No more need to alloc/init a table view cell
    // ...

如果您没有使用故事板,则创建一个新的UITableViewCell子类和.xib。拖动UITableViewCell,将其设置为右侧详细信息并设置重用标识符。然后,您可以使用viewDidLoadregisterNib:forCellReuseIdentifier:registerClass:forCellReuseIdentifier:中使用表格视图注册此课程。