gpt4 book ai didi

ios - 如何让用户重新排序 UITableView 中的部分

转载 作者:技术小花猫 更新时间:2023-10-29 11:06:46 24 4
gpt4 key购买 nike

我正在开发一个包含股票的应用程序,按投资组合排列。所以这很适合表格 View ,我正在研究编辑交互;它非常简单,允许用户添加或删除股票,将它们拖到一个投资组合或另一个投资组合中,但我无法优雅地做的一件事是让用户将一个投资组合拖到另一个投资组合之上或之下。

我现在有一个 hacky 解决方案,其中每个部分的第 0 行是投资组合名称,如果他们将该行拖到另一个投资组合上方,整个表格将重新加载并切换投资组合。这有效,但感觉不太自然。

我确定我不是第一个遇到这个问题的人;谁有更完善的解决方案?

相关问题 - 如何让用户创建新的投资组合/部分?

最佳答案

简单易行:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
{
NSMutableArray *_data;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_data = [NSMutableArray arrayWithObjects:@"One", @"Two", @"Three", nil];
self.tableView.editing = YES;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _data.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"reuseIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:identifier];
}
cell.textLabel.text = _data[indexPath.row];
cell.showsReorderControl = YES;

return cell;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleNone;
}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath
{
[_data exchangeObjectAtIndex:sourceIndexPath.row withObjectAtIndex:destinationIndexPath.row];
}

@end

编辑:

您现在要求的有点复杂。我创建了一个将表格放入单元格的示例,它为您提供了嵌套单元格。该示例非常不吸引人,但它确实有效,您没有理由不能让它看起来漂亮,所以请检查一下:

https://github.com/MichaelSnowden/TableViewInCell

如果这对您不起作用,请尝试使 UITableView moveSection:(NSInteger) toSection:(NSInteger) 看起来更漂亮。 Documentation for that method is here .

我对上述方法的体验是,它非常易于使用,调用时看起来也不错。使用它的一种聪明方法是使用点击手势识别器创建标题。在第一次点击时,突出显示该部分并记录该 indexPath,在第二次点击时,在两个索引路径上调用该方法。它应该可以很好地工作,但您不会从中进行拖放操作。

关于ios - 如何让用户重新排序 UITableView 中的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24564810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com