我想在单元格的右侧显示详细标签文本,但我没有成功。
-(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
,但它什么也没做。
答案 0 :(得分:1)
如果您使用
UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
您的单元格已经初始化,dequeue采用故事板的配置(这就是为什么改变init的样式并不适合你),更改它使用故事板正确的工具并选择{{1表视图单元格样式下的{}或Left Detail
取决于您希望如何显示数据
并删除此行:
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
,将其设置为右侧详细信息并设置重用标识符。然后,您可以使用viewDidLoad
或registerNib:forCellReuseIdentifier:
在registerClass:forCellReuseIdentifier:
中使用表格视图注册此课程。