我使用自定义创建的视图坐在UITableCells
的背景上。一切都很好,但每次创建视图的新实例都会有一点滞后。我试图使用以下方法解决这个问题:
@implementation Cacher
@static Cacher *shared
+(Cacher) sharedInstance{
if(shared == nil){
shared = [[super alloc]init];
shared.viewsDictionary = [[NSMutableDictionary] alloc]init];
}
return shared;
{
另一个班级
+(UIView*) getCellBackgroundForKey:(NSString*)key{
UIView *view = [[Cacher sharedInstance].viewDict objectForKey:key];
if(!view){
view = [[CellBackgroundView alloc]initWithFrame:...];
[[BPPViewsCacher sharedInstance].viewsDict setObject:view forKey:key];
}
return view;
}
然后,在getCellBackgroundForKey
内调用cellForRowAtIndexPath
以放置单元格的背景。
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
UITableViewCell *cell =[tableView dequeReusableCel....];
if(!cell){
cell = [self makeCell:indexPath];
}
//add properties to cell
...
//key is a value generated based on the type of the cell
cell.backgroundView = [ViewMaker getCellBackgroundForKey:key];
}
问题在于,以随机的方式,未显示细胞的一些背景。就像一半的细胞有bacgkrounds,另一半 - 没有。我没有注意到任何模式,所有日志似乎都很好,即没有空对象。我该如何解决这个问题?