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 访问值

ios在tableview单元格中显示/隐藏视图

重用 uitableview 单元格以及单元格中的子视图

只有在 iOS 7 中点击单元格时,tableview 单元格中的 labeltext 才会消失

iOS7上tableview单元格中的文本字段崩溃

iOS开发学习-如何优化tableview的使用