在UITableViewCell
的每个UITableView
内,我有一个UIScrollView
。滚动视图已设置,以便当用户向右滑动时,将出现一个菜单。这类似于iPhone Twitter应用程序中的单元格行为。当用户在另一个单元格上滑动时,我遍历所有可见单元格以告诉UIScrollView
滚动回单元格内容(即其初始位置)。迭代在scrollViewWillBeginDragging
方法中完成,代码如下:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
if( [scrollView tag] == 90 ) {
NSLog(@"Dragging a scroll view inside a cell!");
for (UITableViewCell *cell in self.tableView.visibleCells) {
[(UICellContentScrollView *)[cell viewWithTag:90] scrollRectToVisible:CGRectMake(0.0f, 0.0f, 320.0f, [cell frame].size.height) animated:YES];
}
}
}
在方法viewDidDisappear
中,我再次遍历所有单元格以重置各种类似的东西:
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
for( NSUInteger section = 0; section < [[self tableView] numberOfSections]; section++ ) {
for( NSUInteger row = 0; row < [[self tableView] numberOfRowsInSection:section]; row++ ) {
UITableViewCell *cell = [[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section]];
// resetting cell here
}
}
}
我的问题是,如果我(a)以正确的方式进行此操作,并且(b)是否有人对更好的解决方案有任何建议,因为表格视图可能会存储50个(不超过100个)项目。
答案 0 :(得分:1)
查看NSNotification
文档。您可以注册所有UITableViewCell
个对象以接收可以调用类似“cellWasSwiped”或“needToResetCells”之类的通知。然后,只要您想重置单元格,就可以发布通知。所有注册接收它的UITableViewCell
个对象都会收到通知,然后可以调用您需要的任何方法。