我在一个单元格上有两个视图,当我单击一个单元格时,它将被隐藏,并且一个编辑表单将在其上展开。如何解决?
I have two views on one cell, when I click on a cell it will be hidden and one edit form will be expanded on that. How to resolve that?
我是初学者iOS。我有一个带有两个自定义视图的表格视图单元格:一个是项目单元格,一个是从该单元格编辑。当用户单击项目时,该项目将被隐藏,该单元格的编辑表单将在其上展开。
我该如何解决这个问题。谢谢!
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
MinimumCell *cell1 = (MinimumCell *)[tableView dequeueReusableCellWithIdentifier:@"MinimumCell"];
if (cell1 == nil) {
cell1 = (MinimumCell *)[MinimumCell cellFromNibNamed:@"MinimumCell"];
}
ExtendCell *cell2 = (ExtendCell *)[tableView dequeueReusableCellWithIdentifier:@"ExtendCell"];
if (cell2 == nil) {
cell2 = (ExtendCell *)[ExtendCell cellFromNibNamed:@"ExtendCell"];
}
if(isEditClicked && selectedIndexPath.section == indexPath.section && selectedIndexPath.row == indexPath.row ){
return cell2;
}
return cell1;
}
默认显示单元格1,当用户点击该单元格时,单元格1被替换为单元格2(编辑表单)。它以展开动画出现。
单击行时使用 didSelectRowAtIndexPath 重新加载该单元格
[tableView reloadRowsAtIndexPaths: withRowAnimation: ];
通过以下方法使用您的 cellForRowAtIndex..
如下所示,您可以使用此方法在两个单元格视图之间切换。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// isEditCell is bool variable used to toggle between cell types.
isEditCell=[self shouldToggleView:[tableView cellForRowAtIndexPath:indexPath] ];
NSArray *ll=[[NSArray alloc]initWithObjects:indexPath, nil];
[tableView reloadRowsAtIndexPaths:ll withRowAnimation:UITableViewRowAnimationAutomatic];
}
-(BOOL )shouldToggleView:(UIView *)view {
while (view != nil) {
if ([view isKindOfClass:[TableViewEditCell class]]) {
return NO; //[tbl indexPathForCell:(TableViewEditCell *)view];
}else if ([view isKindOfClass:[TableViewCell class]]) {
return YES;//[tbl indexPathForCell:(TableViewCell *)view];
}
else {
view = [view superview];
}
}
return nil;
}
我是初学者iOS。我有一个带有两个自定义视图的表格视图单元格:一个是项目单元格,一个是从该单元格编辑。当用户单击项目时,该项目将被隐藏,该单元格的编辑表单将在其上展开。
我该如何解决这个问题。谢谢!
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
MinimumCell *cell1 = (MinimumCell *)[tableView dequeueReusableCellWithIdentifier:@"MinimumCell"];
if (cell1 == nil) {
cell1 = (MinimumCell *)[MinimumCell cellFromNibNamed:@"MinimumCell"];
}
ExtendCell *cell2 = (ExtendCell *)[tableView dequeueReusableCellWithIdentifier:@"ExtendCell"];
if (cell2 == nil) {
cell2 = (ExtendCell *)[ExtendCell cellFromNibNamed:@"ExtendCell"];
}
if(isEditClicked && selectedIndexPath.section == indexPath.section && selectedIndexPath.row == indexPath.row ){
return cell2;
}
return cell1;
}
默认显示单元格1,当用户点击该单元格时,单元格1被替换为单元格2(编辑表单)。它以展开动画出现。
单击行时使用 didSelectRowAtIndexPath 重新加载该单元格 [tableView reloadRowsAtIndexPaths: withRowAnimation: ];
通过以下方法使用您的 cellForRowAtIndex..
如下所示,您可以使用此方法在两个单元格视图之间切换。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// isEditCell is bool variable used to toggle between cell types.
isEditCell=[self shouldToggleView:[tableView cellForRowAtIndexPath:indexPath] ];
NSArray *ll=[[NSArray alloc]initWithObjects:indexPath, nil];
[tableView reloadRowsAtIndexPaths:ll withRowAnimation:UITableViewRowAnimationAutomatic];
}
-(BOOL )shouldToggleView:(UIView *)view {
while (view != nil) {
if ([view isKindOfClass:[TableViewEditCell class]]) {
return NO; //[tbl indexPathForCell:(TableViewEditCell *)view];
}else if ([view isKindOfClass:[TableViewCell class]]) {
return YES;//[tbl indexPathForCell:(TableViewCell *)view];
}
else {
view = [view superview];
}
}
return nil;
}