在运行时调整UITableView的单元格

时间:2011-05-15 16:40:03

标签: iphone objective-c ipad uitableview

我已经将UITableViewCell子类化了。我想要的是当我点击单元格时,我在单元格的底部添加了一个UIView并相应地调整单元格的高度。这是我的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{   
MyCell* cell = (MyCell *) [self.table cellForRowAtIndexPath:indexPath]; 
UIView * options = [[UIView alloc] initWithFrame:CGRectMake(0, cell.frame.size.height - 27, cell.frame.size.width, 27)];
UIButton* button1 = [UIButton buttonWithType:UIButtonTypeCustom];
[options addSubview:button1];
UIButton* button2 = [UIButton buttonWithType:UIButtonTypeCustom];
[options addSubview:button2];
UIButton* button3 = [UIButton buttonWithType:UIButtonTypeCustom];
[options addSubview:button3];
//did some layout calculation here to position the button
[cell addSubview:options];
}

这是一个说明问题的video

此外,我尝试将我的单元的accessoryView从我的自定义UIButton更改为常规UITableViewCellAccessoryDisclosure,但它不起作用

MyCell * cell = (MyCell *)[self.table cellForRowAtIndexPath:temp];
     [cell.accessoryView removeFromSuperview];
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

如果你好奇我想要做什么,我正在尝试创建一个tweetbot uitableviewcell,你按下单元格/行,它会显示其他选项(转推等),并且它也显示为动画。

2 个答案:

答案 0 :(得分:2)

我不知道我是否正确理解你要做的事情。但是如果您想要为UITableViewCell高度的变化设置动画,请尝试在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath内进行调整并调用

[tableView beginUpdates];
[tableView endUpdates];

答案 1 :(得分:0)

将控件放入另一个单元格并使用

insertRowsAtIndexPaths:withRowAnimation:   

显示它和

deleteRowsAtIndexPaths:withRowAnimation: 

隐藏它。