- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在开发一个 UI 组件,因为它的行为类似于 UITableView,所以我在 UITableView 之后对委托(delegate)和数据源协议(protocol)进行了大量建模。但是,我注意到一种我不太了解的方法——“canMoveRowAtIndexPath”。
这实质上允许代理指定它是否希望给定的单元格是“可移动的”。但是,将另一个可移动单元格放入比不可移动单元格更高的索引(即在表格中的“上方”)不会导致它间接移动吗? (因为被移动的单元格下方的每个单元格都会被向下推一排)。
所以基本上,我的问题是这种方法的意义何在?任何人都可以提供一个示例用例吗?因为我正在争论我是否应该费心将它包含在我的组件中。
如果有的话,我认为更有用的委托(delegate)方法可能是诸如“canMoveRowInSection”之类的东西,它允许您指定是否可以移动给定部分中的任何行。这将允许您禁用特定部分的重新排序,并且将其他行移到该部分之外不会影响其中行的顺序。
我知道 Apple 工程师提供这种方法是有原因的,我只是看不出这个原因可能是什么。
感谢您的任何见解!
最佳答案
canMoveRowAtIndexPath
告诉 UITableView 如果表格处于编辑模式,则可以上下移动单元格(或单元格,如果您特别选择)。
由开发人员负责处理该 Action 的另一面。
例如,假设您有一个由“A”、“B”、“C”组成的数组(确切地说是 NSMutableArray
),并且您想将该数组重新排列为“B”、“C”、“A”。您需要根据要移动的单元格的位置在数组中进行更改并保存该数组。
例子
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
id objectToMove = [[array objectAtIndex:fromIndexPath.row] retain];
[array removeObjectAtIndex:fromIndexPath.row];
[array insertObject:objectToMove atIndex:toIndexPath.row];
[objectToMove release];
}
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
if ( indexPath.section == 0 )
return NO;
return YES;
}
关于objective-c - 委托(delegate)方法 'canMoveRowAtIndexPath' 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887162/
只看那张图片(你可能需要放大它) 在监 window 格中,您会看到 tableView 为空。没有意义。在任何情况下 - (UITableViewCellEditingStyle)tableView
为什么 tableView:canMoveRowAtIndexPath: 是 UITableViewDataSource协议(protocol)而不是 UITableViewDelegate协议(pr
非常非常基础。我不明白。当加载表格和切换编辑时 canEdit 被调用,但不是 canMove。我做错了什么? - (BOOL)tableView:(UITableView *)tableView c
我现在正在开发一个 UI 组件,因为它的行为类似于 UITableView,所以我在 UITableView 之后对委托(delegate)和数据源协议(protocol)进行了大量建模。但是,我注意
我是一名优秀的程序员,十分优秀!