当选择单元格UITableView时,如何隐藏和显示uiview

时间:2014-08-01 04:23:20

标签: ios objective-c uitableview uiview

基本上我想隐藏总是隐藏uiview(带按钮),直到触摸一个单元格然后它会从动画的底部带动动画(如果可能的话)

类似的东西:

enter image description here

我在一个应用程序中看到了它并爱上了它,并认为这将是一个很棒的用户体验。

请如何存档,欢呼

到目前为止

代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *mycell=[tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];

    if (mycell==nil) {
        mycell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellIdentifier"];
    }
    UIView *myview = [[UIView alloc] initWithFrame:CGRectMake(0, 25, 320, 50)];
    [myview setBackgroundColor:[UIColor greenColor]];
    [mycell.contentView addSubview:myview];

    mycell.imageView.image = [UIImage imageNamed:@"placeholder.png"];
    mycell.textLabel.text = @"Song Title";
    UIFont *myFont = [ UIFont fontWithName: @"AppleSDGothicNeo-Bold" size: 12.0 ];
    [mycell.textLabel setTextColor: [UIColor colorWithRed:0.839 green:0.271 blue:0.255 alpha:1]];
    mycell.textLabel.font  = myFont;

    return mycell;
}

P.s myView是我要添加的视图,其中包含按钮。干杯!!!

2 个答案:

答案 0 :(得分:1)

此选项要求您的UITableViewDelegateUITableViewDataSource是同一个对象,通常就是这种情况。

  1. UITableViewDelegate的{​​{1}}中,您可以管理一系列选定的indexPath值,然后为刚刚选中/取消选择的行调用tableView:didSelectRowAtIndexPath:
  2. [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]]中,您可以检查当前indexPath是否在tableView:cellForRowAtIndexPath方法管理的所选indexPath列表中,并采取相应的操作来显示/隐藏其他内容

答案 1 :(得分:0)

试试这个

  • 首先采用全局变量

    NSInteger selectedIndex;

  • 在viewDidLoad中插入此值-1;

    selectedIndex = -1;

然后

使用 didSelectRowAtIndexPath 函数在此变量中插入值。就像这样并重新加载动画。

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    selectedIndex = indexPath.row;
    //[tableViewObj reloadData];
    [tableViewObj reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}

并在 heightForRowAtIndexPath 函数中使用If / else来管理selectedIndex的高度..

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.row == selectedIndex) {
        return 200;
    }else{
       return 80;
    }
    return 0;
}

正如我所见,已经在这里完全描述了..试试这个工作正常,因为它现在由我测试..