在我的 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!");
}];
此代码仅用于任务列表的淡入淡出和上滑。不包括详细信息列表。不确定我是否正确实施了这一点。想听听你对此的看法。
谢谢,
本