当您滑动tableview并且正在隐藏或删除单元格时,tableviewcell的UITableView
中是否有任何方法。我有这段代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
int curIndex = 0;
for (int i = 0; i < [dataHolder.dateArray count]; i++)
{
if ([[dataHolder.dateArray objectAtIndex:i] isEqual:[dataHolder.allDates objectAtIndex:[indexPath section]]])
{
if ([self indexHasContains:i] == NO)
{
curIndex = i;
[indexHasChossen addObject:[NSString stringWithFormat:@"%i", i]];
break;
}
}
}
cell.selectionStyle = UITableViewCellSelectionStyleGray;
cell.textLabel.text = [NSString stringWithFormat:@"%@, %@", [dataHolder.courseArray objectAtIndex:curIndex], [dataHolder.placeArray objectAtIndex:curIndex]];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [dataHolder.timeArray objectAtIndex:curIndex]];
cell.selectionStyle = UITableViewCellSelectionStyleGray;
cell.textLabel.textColor = [UIColor blackColor];
cell.detailTextLabel.textColor = [UIColor whiteColor];
return cell;
}
我还想要一个在隐藏/删除单元格时从indexHasChossen数组中删除的方法。我查看了苹果dokumentation,还没有找到任何东西。有人知道这样做吗?
答案 0 :(得分:0)
虽然没有“隐藏”tableViewCells的标准概念,但用户删除的单元格在tableView中报告:commitEditingStyle:forRowAtIndexPath:
但是我还要补充一点,你似乎在跟踪cellForRowAtIndexPath中的“hasChosen”。此方法仅表示单元格即将出现在屏幕上,而不是已被选中。使用tableView调用委托时出现“选择”:didSelectRowAtIndexPath:
编辑:啊,也许是“隐藏”,你的意思是它已经离屏了。不,我不相信有这么一个电话,(虽然你可以作弊,看看你得到的任何出列的细胞,因为那些细胞以前在屏幕上并且现在可用)。
答案 1 :(得分:0)
如果要隐藏或删除单元格,tableView:cellForRowAtIndexPath:
如何无关紧要。表视图仅在知道单元格存在时才调用此方法。这取决于您在方法numberOfSectionsInTableView:
和tableView:numberOfRowsInSection:
方法中返回的内容。大多数情况下,前者返回1
,所以如果你想要消除整个部分而不是你应该使用某种标记,例如sectionHidden
,它是一个布尔值,表示是否隐藏了部分。 / p>
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if ( sectionHidden )
return 0;
else
return 1;
}
以及您想要启动删除操作的任何地方执行类似的操作,
sectionHidden = YES;
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0]
withRowAnimation:UITableViewRowAnimationFade];
并将其重新打开,执行sectionHidden = NO
并致电reloadSections:withRowAnimation:
。
同样适用于行,您必须更改tableView:numberOfRowsInSection:
方法以反映您已删除行或隐藏行。这次您要使用reloadRowsAtIndexPaths:withRowAnimation:
代替reloadSections:withRowAnimation:
方法。
答案 2 :(得分:0)
从uitableview删除单元格很简单。我建议您查看Apple开发人员文档中的iPhoneCoreDataRecipes项目。
您必须向UITableViewDelegate添加一个名为commitEditingStyle的函数,并添加编辑按钮(UITableViewController中的self.editButtonItem)以允许编辑模式。
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the object for the given index path
}
}