扩展时如何隐藏扩展的tableviews标签? - IOS

时间:2014-07-08 10:08:22

标签: ios objective-c uitableview expand

我希望在展开单元格时隐藏展开的tableviews标签,并在折叠时隐藏按钮。我在另一个类中使用了我的单元格实现,标签的属性和标题中的按钮。问题是当我在ExpandedViewController中调用这些单元格方法时,代码会进入方法,但它不会更改属性行为。你能帮我解决这个问题吗?

谢谢

ExpandedCell.h

@property (nonatomic, retain) IBOutlet UILabel *lblTitle;
@property (strong, nonatomic) IBOutlet UIButton *setTime;

ExpandedCell.m

(void)setIfHidden:(BOOL)showIfHidden
{ 
if (showIfHidden)
{
[self.lblTitle setHidden:YES];
[self.setTime setHidden:NO];
}
else
{
[self.lblTitle setHidden:NO];
[self.setTime setHidden:YES];
}  
}

ExpandedViewController.m

import ExpandedCell.h

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath isEqual:self.expandedIndexPath])
{   
    return CELL_HEIGHT_EXPANDED;
}
else
{
    return CELL_HEIGHT_COLLAPSED;
}
}
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.expandedIndexPath = ([self.expandedIndexPath isEqual:indexPath]) ? nil : indexPath;

ExpandedCell *hideCell = [[ExpandedCell alloc] init];
showIfHidden = YES;

[hideCell setIfHidden:showIfHidden];

[tableView beginUpdates];
[tableView endUpdates];

[tableView deselectRowAtIndexPath:indexPath animated:YES];
}

1 个答案:

答案 0 :(得分:0)

您的媒体资源标记为IBOutlet。您使用[[ExpandedCell alloc] init]创建单元格的新实例。

你有几个问题:

  1. 通过调用alloc initIBOutlet将不存在,因为该实例未从NIB文件中取消归档。
  2. 创建hideCell后,您可以在其上调用方法,然后将其销毁(因为没有任何内容保留)。
  3. 您不应该创建新单元格,应该访问和更新现有单元格,因此您应该使用:

  4. ExpandedCell *hideCell = [tableView cellForRowAtIndexPath:indexPath];