代码之家  ›  专栏  ›  技术社区  ›  sagarkothari

在类似TableCell的实用程序中翻转

  •  1
  • sagarkothari  · 技术社区  · 15 年前

    我有一些关于 tableViewCell .

    在数组中为表单元格/行添加了许多值。现在,每个单元格的信息按钮都是静态的。数组的每个元素都有字典,它有这两个值, cellvalue detail 值。

    现在,当用户单击信息按钮时,单元格本身就会翻转并显示其详细信息。

    看,我们有一个实用程序作为翻转的例子,但是在实用程序中,整个视图控制器被翻转了。

    我已经尝试过遵循代码。

    作为翻转动画的示例:

    • 开放式仪表板
    • 在屏幕上拖动时钟
    • 现在看看时钟,它的底部有信息按钮。
    • 点击那个按钮
    • 时钟将被翻转。
    • 现在单击“完成”。它会再次翻到原版

    我想实现相同的方法,为此我有两个多值。

    -(void)btnInfoTapped:(NSDictionary*)sender cellID:(NSString*)cellID{
        if(tmpVCtr!=nil && [tmpVCtr retainCount]>0){ [tmpVCtr release]; tmpVCtr=nil; }
        tmpVCtr=[[UIViewController alloc] init]; // temp view controller
        if(nxtEventInfoVCtr!=nil && [nxtEventInfoVCtr retainCount]>0){ [nxtEventInfoVCtr release]; nxtEventInfoVCtr=nil; }  // a view controller which is going to be flipped.
        nxtEventInfoVCtr=[[EventInfoVCtr alloc] initWithNibName:@"EventInfoVCtr" bundle:nil];
        nxtEventInfoVCtr.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
        NSLog(@"%@",[sender description]);
        // here i am settings values for flipped view controller
    if([sender valueForKey:@"pendingextratext"]){
        nxtEventInfoVCtr.strText=[sender valueForKey:@"pendingextratext"];
        nxtEventInfoVCtr.strTitle=[sender valueForKey:@"pendingdescription"];
        CustomCellPending *tmp=(CustomCellPending *)[tblMain dequeueReusableCellWithIdentifier:cellID];
        [tmpVCtr setView:[tmp backgroundView]];
        [tmpVCtr presentModalViewController:nxtEventInfoVCtr animated:YES];
    } else {
        nxtEventInfoVCtr.strText=[sender valueForKey:@"payextratext"];
        nxtEventInfoVCtr.strTitle=[sender valueForKey:@"paydescription"];
        CustomCellPay *tmp=(CustomCellPay *)[tblMain dequeueReusableCellWithIdentifier:cellID];
        [tmpVCtr setView:[tmp backgroundView]];
        [tmpVCtr presentModalViewController:nxtEventInfoVCtr animated:YES];
    }
         }
    

    我想要的是翻转一个单元内的视图控制器。有可能吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Srikar Appalaraju Tonetel    14 年前

    首先,这可能只是个人喜好,但你的代码有点不整洁——你知道,一些换行符没什么问题;)

    关于您的问题,我建议您在单元格中使用两个视图-一个是单元格的默认ContentView,另一个是您自己创建的自定义视图。

    然后,您可以在表视图控制器中编写一些代码,这些代码将响应信息按钮的按下。该方法应该使用indexpath决定要翻转的表单元,然后使用核心动画或具有翻转转换的简单uiview动画执行标准视图翻转。

    重要的是要知道 tableViewCell 默认情况下,没有自己的控制器(如果需要,您可以创建一个控制器),因此当您处理表视图单元格时,您感兴趣的大多数内容都将由表视图控制器处理。

    事情抬头:

    • uiview动画
      • +beginAnimations:forContext:
      • +setAnimationTransition:forView:cache:
    • 自定义表格单元格视图
      • 如何绘制表格单元格
        2
  •  1
  •   Srikar Appalaraju Tonetel    14 年前

    我已将视图控制器的视图添加到单元视图。 手段

    [cell addSubView:aVCtr.view];
    

    现在,每个视图控制器中都有两个视图。 视图控制器有按钮&on;按钮点击事件,我正在翻转视图。

    请参见,以下代码是视图控制器的代码,视图控制器的视图将添加到单元格中。

    -(IBAction)btnInfoTapped:(id)sender{
        CGContextRef context = UIGraphicsGetCurrentContext();
        [UIView beginAnimations:nil context:context];
        [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:viewMain cache:YES];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [UIView setAnimationDuration:1.0];
        [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(hideMainView) userInfo:nil repeats:NO];
        [UIView commitAnimations];
    }
    -(void)hideMainView{
        [viewMain addSubview:viewInfo];
    }
    
    -(IBAction)btnBack:(id)sender{
        CGContextRef context = UIGraphicsGetCurrentContext();
        [UIView beginAnimations:nil context:context];
        [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:viewMain cache:YES];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [UIView setAnimationDuration:1.0];
        [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(hideInfoView) userInfo:nil repeats:NO];
        [UIView commitAnimations];
    }
    
    -(void)hideInfoView {
        [viewInfo removeFromSuperview];
    }