如何保存"州" UITableViewCell的

时间:2014-09-07 14:29:31

标签: ios objective-c uitableview

使用Objective-C

我有一个可以刷卡的单元格表(例如,使用this post进行逻辑上的一些更改)。目前我可以刷一下细胞,然后在翻转桌子之后就可以了解状态"将被重置为"关闭"。我想实现一些"内存"用于存储每个单元的最后状态的机制。

我如何尝试这样做 - 在单元类创建协议中,其中实现2获取单元格的当前indexPath并将其添加到NSMutableSet的方法,并在呈现之前,控制器检查此单元格是否已经在集合中 - 设置所需状态

我为viewController和tableView以及tableViewCell使用单独的.xib文件。

代码 - cell.h类文件:

@protocol PEDoctorsViewTableViewCellDelegate
@optional
//buttonAction
- (void)buttonDeleteAction;
//method for closing cell with swipe
- (void)cellDidSwipedIn: (UITableViewCell*)cell;
//method for opening cell with swipe
- (void)cellDidSwipedOut:(UITableViewCell *)cell;
@end 
@interface PEDoctorsViewTableViewCell : UITableViewCell <PEDoctorsViewTableViewCellDelegate>
@property (strong, nonatomic) id <PEDoctorsViewTableViewCellDelegate> delegate;
//method for protocol PEDoctorsViewTableViewCellDelegate
- (void)setCellSwiped;
@end

cell.m档案

...
//add some code for handling reuse of cells
//fixing issue with not remembeering of cell's state
//close all cells during flipping tableView
- (void)prepareForReuse{
[super prepareForReuse];
//close all cells before showing
self.viewDoctorsNameView.frame = CGRectMake(0, 0,     self.viewDoctorsNameView.frame.size.width, self.viewDoctorsNameView.frame.size.height);
}

viewController with tableView class.m

#pragma mark - PEDoctorsViewTableViewCellDelegate

- (void)cellDidSwipedOut:(UITableViewCell *)cell{
    NSIndexPath * currentOpenedCellIndexPath = [self.tableView indexPathForCell:cell];
    [self.currentlySwipedAndOpenesCells addObject:currentOpenedCellIndexPath];
}

- (void)cellDidSwipedIn:(UITableViewCell *)cell{
    [self.currentlySwipedAndOpenesCells removeObject:[self.tableView indexPathForCell:cell]];
}

- (void)buttonDeleteAction {
    NSLog(@"delete action");
}

并检查- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法,如

if ([self.currentlySwipedAndOpenesCells containsObject:[self.tableView indexPathForCell:cell]]){
    [cell setCellSwiped];
}

这个班也有

//place to store set of opened cells
@property (strong, nonatomic) NSMutableSet * currentlySwipedAndOpenesCells;

- (void)viewDidLoad初始化。

结果 - 我得到了所有重置位置的单元格。

  • 我尝试更改- (void)prepareForReuse方法中的代码 - 根据方法的变化更改单元格的位置 - 这部分工作正常。
  • 尝试检查委托方法 - 在完全需要的时刻全部开火。
  • 尝试在NSLog中添加对象之前添加一些NSMuatbaleSet方法,然后重新创建单元格(想想可能数据丢失) - 结果 - 在将对象添加到集合期间 - 所有看起来都好:< / LI>

enter image description here

在重新创建过程中 - 看起来也可以:

enter image description here

但未显示表格中的更改。我尝试检查保存期间捕获的对象 -

enter image description here

在接下来开始重新创建过程的小翻转之后:

enter image description here

据我了解 - 同一个单元格现在是一个新对象。还尝试向单元格添加一些BOOL属性以控制和比较它的状态 - 结果相同 - 每次都是新单元格。

知道我做错了吗?

0 个答案:

没有答案