0

在我的 tableViewCell 中,当 UILabel 被点击时,标签变成了一个就地 UITextField 编辑器,键盘从底部向上滑动。除此之外,将 detailsListView 向上滚动到 NodeCell 的底部,其中包含有关我可以编辑的“NodeCell”的更多详细信息。

我听说如何实现这一点的方法是向上滚动 detailsViewController 是通过 performSegueWithIdentifier。也许是这样,但我需要通过就地编辑将点击的 UITableViewcell 动画到顶部,并同时查看 detailsViewController。我在网上看到的示例是destinationViewController 在填充窗口时滑动而taskListView 消失的地方。

所以我有一些问题:

1) 如何在点击时将 UILabel 转换为 UITextField?我的意思是我必须有两个子视图(1 个 UITextField 和 1 个 UILabel)。我可以只用一个子视图来做吗?有没有办法让 UITextField 看起来像 UILabel,或者我需要实现自己的自定义 UITextField?

到目前为止我可能的解决方案:我在想我创建一个 UIViewController,带有一个 UITableView 点击的 UITableViewCell 将导致 UITableView 框架向上移动到单元格或使用 UIView 块动画向上移动到顶部,淡出那些没有的单元格t 单击并将 UIView 向上滑动到指定位置。对我来说,这意味着一切都可以在一个 UIViewController 中完成,而不需要两个视图控制器。

你怎么看?

不太确定我是否以正确的方式编写了这段代码。可能必须再次通过文档。

这是我在 tappedCell 下方淡化 UITableViewCells 的实现。有用。

CGRect originalLocation;
CGRect newLocation;
NSInteger cellRow;
cellRow = indexPath.row;

  //Retrieve all the cells below the current tapped cell excluding the current tapped cell and push them into an array  
    NSMutableArray *cells = [[NSMutableArray alloc] init];
    for (NSInteger j = 0; j < 1; ++j)
    {
        for (NSInteger i = 0; i < [self.tableView numberOfRowsInSection:j]; ++i)
        {
            if (i != cellRow && i > cellRow){
            [cells addObject:[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];
            }
        }
    }

    //Change the alpha of the cells below tappedCell
    for (NSInteger j = 0; j < cells.count; ++j) {
        cell = [cells objectAtIndex:j];
        [UIView animateWithDuration:1.0
                              delay:0.1
                            options: UIViewAnimationCurveEaseOut
                         animations:^{

                             cell.contentView.alpha = 0.05;
                             cell.backgroundView.alpha = 0.05;

                         }
                         completion:^(BOOL finished){
                             NSLog(@"Done!");


                         }];

    }


//get UITableView newLocation from tableView Frame minus the tappedCell origin.   
originalLocation = [self.tableView frame];//[self.tabview frame];
newLocation = originalLocation;
newLocation.origin.y = originalLocation.origin.y - rect.origin.y - 25; //I think the cell height is 25. 

[UIView animateWithDuration:1.0
                      delay:0.1
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     [self.tableView setFrame:newLocation];

                 }
                 completion:^(BOOL finished){
                     NSLog(@"Done!");


                 }];

此代码仅用于任务列表的淡入淡出和上滑。不包括详细信息列表。不确定我是否正确实施了这一点。想听听你对此的看法。

谢谢,

4

0 回答 0