如何在UISplitView的UITableView子视图中进行多行选择?

时间:2012-05-29 05:55:22

标签: iphone uitableview uisplitview

我想在uitableview(uipopover视图)中选择多行,这是UISplitview的子视图。选定的行信息应显示在splitview的详细信息窗格中的Lable中。

我设法获得多行选择,但没有在详细信息窗格中显示所选行信息。

我们将不胜感激任何帮助/代码段。

谢谢,

2 个答案:

答案 0 :(得分:1)

因为您没有提供一些示例代码,所以我们无法为您提供准确的代码段。有很多方法可以填充tableView,所以我们应该怎么知道你是怎么做到的?

尽管如此,我会告诉你它应该如何抽象地运作。你需要一个包含当前选择的数组,或者 - 如@RicardPérezdelCampo建议的那样 - 你在数据模型中添加一个包含状态的属性(例如selected)。

第2步,每次你都要检查这个属性(或数组) a)更改选择或
b)tableView显示在屏幕上(viewWillAppear并显示弹出窗口)

因此,您需要一个可在所有地方使用的数据源(在您的情况下为PopoversplitViewdetailView

你说一个tableView已经工作了,所以第二个问题可能就是选择dataSource
UITableView中还有一个名为indexPathsForSelectedRows的方法,它会为您提供当前选择的数组。您可以将该选择应用于其他tableView,但这是一种hackish方式,您肯定应该改变您的数据模型。

答案 1 :(得分:1)

在表视图控制器中添加以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tableView.allowsMultipleSelection = YES;
}

在表格视图中委托添加:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSArray *selectedRows = [tableView indexPathsForSelectedRows];

    NSMutableArray *mySelectedObjects = [NSMutableArray array];

    for (NSIndexPath *indexPath in selectedRows) {
        MyObject *object = [datasource objectAtIndex:indexPath.row];
        [mySelectedObjects addObject:object];
    }

    [self showSelectedObjectsInDetailPane];
}