我有一個UITableView
,它具有2個不同的自定義UITableViewCell
以及2個不同的唯一標識符。上一行的UITableViewCell內容在單元重新加載時仍然可見
我加載Load
上的第一個自定義UITableViewCell
,然後加載Cell Select
上的第二個自定義UITableViewCell
。
我知道我的問題與我重複使用我的單元格的方式有關。但我試過使用
routineSearchSelectedResultCell * cell = (routineSearchSelectedResultCell*)[tableView dequeueReusableCellWithIdentifier:nil];
並且結果是新的UITableViewCell
是空的,並且屬性沒有被填充。
我也試過[[[cell contentView] subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)];
但給我同樣的結果。
我怎麼能解決這個問題?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (idp && idp.row == indexPath.row ) {
return [self tableViewRoutineSelectedResult:tableView cellForRowAtIndexPath:indexPath];
}
NSString *cellIdentifier = @"routineSearchCell";
routineSearchCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[routineSearchCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}
cell.routineName.text = _myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineName"];
cell.routineAuthor.text = _myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"username"];
return cell;
}
- (routineSearchSelectedResultCell *)tableViewRoutineSelectedResult:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary* myRoutine = _myDownloadedInfo[@"routines"][indexPath.row][@"routine"];
[self sortOutRoutineImages:myRoutine[@"routineType"]];
NSString *cellIdentifier = @"routineSearchSelectedResultCell";
routineSearchSelectedResultCell * cell = (routineSearchSelectedResultCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[routineSearchSelectedResultCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}
cell.label1.text [email protected]"test";
cell.contentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"BlackGradientSearch"]];
cell = [self iconRoutineImagesController:cell];
cell.imgInstruction.image = [UIImage imageNamed:@"InstructionSearchWhite"];
cell.imgVideos.image = [UIImage imageNamed:@"VideoSearchWhite"];
cell.routineName.text = myRoutine[@"routineName"];
[cell.download setBackgroundImage:[UIImage imageNamed:@"DownloadSearchWhite"] forState:UIControlStateNormal];
return cell;
}
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (idp) {
NSIndexPath* pIdp = [[NSIndexPath alloc] init];
pIdp = idp;
idp = indexPath;
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
[tableView reloadRowsAtIndexPaths:@[pIdp] withRowAnimation:UITableViewRowAnimationRight];
[tableView endUpdates];
} else {
idp = [[NSIndexPath alloc]init];
idp = indexPath;
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
[tableView endUpdates];
}
}
這樣的IM假設你指定'IDP。行「的單元格選擇,然後調用'reloadData'? – KDaker
我剛剛添加了'didSelectRowAtIndexPath'的代碼 –
那麼究竟是什麼問題呢?從圖片看來,這個單元格正在加載。如果你重新加載,你是否期待它消失? – KDaker