ios 5子视图在tableview单元格中的两个视图之间翻转
Posted
技术标签:
【中文标题】ios 5子视图在tableview单元格中的两个视图之间翻转【英文标题】:ios 5 subview flip between two view in tableview cell 【发布时间】:2012-05-25 09:12:13 【问题描述】:我有包含自定义单元格的表格视图。 当用户单击该行时,每个单元格都有我想要翻转的视图。我成功地使它适用于这个。但我遇到的问题是当用户点击其他行时,我想翻转回上一个单元格的原始视图并翻转当前点击的行。
这里有一些代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
CustomCell *selectedCell =
(CustomCell *)[self.AlbumViewTable cellForRowAtIndexPath:self.current_index];
//if other row is already flipped then make it back to original state.
if(otherRowIsFlipped)
selectedCell.defaultImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"defaultIndecator.jpg"]];
selectedCell.defaultImage = CGRectMake(0, 0, 43, 43);
[self flipView:selectedCell.flipViewContainer From:selectedCell.activity To:selectedCell.defaultImage];
CustomCell * new_row =
(CustomCell *)[self.AlbumViewTable cellForRowAtIndexPath:indexPath];
new_row.activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
new_row.activity.frame = CGRectMake(0, 0, 43, 43);
[new_row.activity startAnimating];
//this method is merely called UIView subroutine to flip between two view
[self flipView:new_row.flipViewContainer From:new_row.defaultImage To:new_row.activity];
[self.AlbumViewTable deselectRowAtIndexPath:indexPath animated:YES];
我能够翻转以前选择的行并翻转当前选择的行,但是我发现奇怪的事情是,当我向下滚动表格视图时,翻转视图出现在从未被选择的行上。
我尝试在 CustomCell 类中创建属性并尝试翻转但也没有运气。 我不确定这种方法是否正确,但它似乎有效,除非我向下滚动到 加载其他行。
如果您有任何建议,我将不胜感激。谢谢
【问题讨论】:
你应该显示一些代码...... - (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition; - (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;使用这些代表 显示一些代码以获得更多响应... 【参考方案1】:你应该用这种视图结构制作一个自定义的 TableViewCell
-CELL
--CONTENT_VIEW
---1st_side
---2nd_side
代码是
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.7f];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:containerView cache:NO];
[firstView removeFromSuperview];
[containerView addSubview:secondView];
[UIView commitAnimations];
back 方法也一样
【讨论】:
CustomCell 类结构是这样的。我的问题是,当您从超级视图中删除视图时,我相信它会自动释放其内存。那么当我尝试再次滑动它时,我应该再次分配一个堆吗? 再一次,当我向下滚动到其他单元格时,其他一些单元格以某种方式共享翻转视图。那是其他单元格的子视图显示为翻转视图,但从未被单击过。我猜是因为它使用了可重复使用的单元格? 视图应该是您单元格的属性。如果它们是,它们将因为保留在单元格中而留在记忆中。是的,您应该在单元格中使用 -prepereForReuse 方法来设置默认状态。以及打开的 NSIndexPathes 数组以上是关于ios 5子视图在tableview单元格中的两个视图之间翻转的主要内容,如果未能解决你的问题,请参考以下文章
iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值