我跟随西蒙李的tutorial动画uitableview高度变化,它的工作令人惊叹!我似乎面临的唯一问题是我可以挖掘几个单元,并且无论另一个单元是否已经扩展,它们都将保持展开状态。我只希望在任何时候扩展一个,如果另一个已经扩展,在新扩展之前要关闭它。一次只展开“一个”单元格吗?目前我可以打开多个
Simon提到我们应该“将单个NSIndexPath存储为当前选定项目而不是索引数组”。我不确定如何做到这一点。如果任何人都可以帮忙,那真是太棒了!
我跟随西蒙李的tutorial动画uitableview高度变化,它的工作令人惊叹!我似乎面临的唯一问题是我可以挖掘几个单元,并且无论另一个单元是否已经扩展,它们都将保持展开状态。我只希望在任何时候扩展一个,如果另一个已经扩展,在新扩展之前要关闭它。一次只展开“一个”单元格吗?目前我可以打开多个
Simon提到我们应该“将单个NSIndexPath存储为当前选定项目而不是索引数组”。我不确定如何做到这一点。如果任何人都可以帮忙,那真是太棒了!
你必须做什么只是将下面的代码添加到tableView代理方法tableView:didSelectRowAtIndexPath:
下面的线
[selectedIndexes setObject:selectedIndex forKey:indexPath];
代码添加
NSArray *key = selectedIndexes.allKeys;
for (int i = 0; i < [key count]; i++) {
if (![[key objectAtIndex:i] isEqual:indexPath]) {
[selectedIndexes setObject:[NSNumber numberWithBool:NO] forKey:[key objectAtIndex:i]];
}
}
编码快乐:) 享受一天!
是的,你可以使用的UITableView的委托方法COLAPSE细胞 - (空)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath和 - (CGFloat的)的tableView:(UITableView的*)的tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath: -
首先声明的变量获得theindexPath
NSIndexPath *selectedCellIndexPath;
然后让细胞的indexPath在didSelectRowAtIndexPath方法: -
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
selectedCellIndexPath=indexPath;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationBottom];
}
然后做倒塌和延长,并设置上限和高度: -
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(selectedCellIndexPath != nil
&& [selectedCellIndexPath compare:indexPath] == NSOrderedSame)
return yourCellsExtendedHeightInInteger;
return yourCellsCollapsedHeightInInteger;
}
或使用
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(selectedCellIndexPath && indexPath.row == selectedCellIndexPath .row)
{
return 100;
}
return 44;
}
你可以看到这个tutorial也: -
这也给出了相同的结果,但与一些锯齿动画即蓝色选定的行正在被压在新出现的行下。但与我的它显示顺利的动画也动态按需动画,即根据单元格的位置,它显示动画的行向上或向下 –
如果您已经开发了一个自定义单元格,您在layoutsubviews [super layoutSubviews]中设置; \t \t CGRect contentRect = self.contentView.bounds; ? –
我刚刚把你的代码在问题中给出的例子,并检查它在做什么,它在做什么 –
你真棒你的答案更容易处理,而无需重新编码整个过程!在放大的单元格中放置工具栏时,我也遇到了另一个问题。当单元格未展开时,我试过所有隐藏它,然后在扩展时允许用户交互。我为此创建了一个全新的问题,再次感谢! [这是问题](http://stackoverflow.com/questions/10616932/enabling-disabling-ui-toolbar-in-expanded-cell) – Year3000