我正在使用一种类型的自定义表格视图单元格,但是当其他数据发布到我的表格视图时,我希望它显示在不同的自定义表格视图单元格中同一张桌子。在同一个表视图中使用两个不同的自定义表格单元格
例如,我在我的表格视图中创建了一个聊天。但是,当发布某些细节时,我想要一个单独的单元设计来显示这些细节。到目前为止,请参阅我的代码。
我的问题:我怎么能写,“如果field_swaptime在self.messages是空的,显示ChatTableViewCell - 如果它包含数据,显示SwapDetailTableViewCell”?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ChatTableIdentifier = @"ChatTableViewCell";
static NSString *ChatTableIdentifier2 = @"SwapDetailTableViewCell";
NSDictionary *data = [self.messages objectAtIndex:indexPath.row];
if ([data objectForKey:@"field_swaptime"] == nil) {
NSLog(@"THIS IS DATA %@", data);
ChatTableViewCell *cell = (ChatTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ChatTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
NSString *userName = [data objectForKey:@"name"];
[cell.sendingUser setText:userName];
NSString *messageBody = [data objectForKey:@"body"];
[cell.messageDisplayed setText:messageBody];
NSString *timeReceived = [data objectForKey:@"published at"];
NSLog(@"Message Received at %@", timeReceived);
[cell.timeStamp setText:timeReceived];
return cell;
}
else {
SwapDetailTableViewCell *cell = (SwapDetailTableViewCell *)[tableView dequeueReusableCellWithIdentifier:ChatTableIdentifier2];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SwapDetailTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
NSString *Time = [data objectForKey:@"field_swaptime"];
NSLog(@"This is time %@", Time);
[cell.startTime setText:Time];
NSString *TimeEnd = [data objectForKey:@"field_endswaptime"];
[cell.endTime setText:TimeEnd];
return cell;
}
}
好的1 - 你摇滚发布这个答案。哈哈。 2)你能解释一下这一行是什么意思:if(!data ||![data objectForKey:@“field_swaptime”]){例如是 - “如果self.messages中的field_swaptime是,则显示ChatTableViewCell”?我实现了你的代码,它似乎甚至在数据发布到field_swaptime之后使用ChatTableViewCell?如果数据发布时没有使用field_swaptime,那么该表应该添加ChatTableViewCell,并且如果field_swaptime存在,则使用SwapDetailTableViewCell(因此,我应该在我的表中看到两个diff单元格设计)? –
E.g.我不希望整个表格使用同一单元格 - 我应该有一个表格显示两种不同的单元格设计,不是吗? –
是的,正确的。 if是说“如果没有数据字典(因为self.messages为零),或没有与”field_swaptime“键相关的值,则显示一个ChatTableViewCell,否则显示一个SwapDetailTableViewCell” – gschandler