Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone tableview中的多单元格选择_Iphone_Uitableview - Fatal编程技术网

Iphone tableview中的多单元格选择

Iphone tableview中的多单元格选择,iphone,uitableview,Iphone,Uitableview,我想把照片上传到twitter、facebook和twit pic等等。我把它放在数组中,并显示在表视图中。我正在使用shareKit。如果我选择一个单元格(例如Twitter),那么它会将照片上传到Twitter。我想选择多个单元格,并在一个按钮上执行此发送操作(发送到选定行项目)。我可以标记/取消标记单元格,但如何获取单元格的选定值。我不希望它处于表格的编辑模式 代码: - (void) tableView:(UITableView *)atableView didSelectRowAtI

我想把照片上传到twitter、facebook和twit pic等等。我把它放在数组中,并显示在表视图中。我正在使用shareKit。如果我选择一个单元格(例如Twitter),那么它会将照片上传到Twitter。我想选择多个单元格,并在一个按钮上执行此发送操作(发送到选定行项目)。我可以标记/取消标记单元格,但如何获取单元格的选定值。我不希望它处于表格的编辑模式

代码:

-  (void) tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }


    else {

        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }



}

您可以在数组中管理选定的单元格或未选定的单元格,当您选择一行时,然后在didSelectRowAtIndexPath中根据上述条件更新该数组,并在上载图像时使用该数组。例如,-u有一个数组,该数组有两个字典对象,分别对应于键@“image”和@“isSelected”,并使用此数组填充表,当您选择一行时,然后在indexPath.row上以字典对象的形式访问数组中的元素,并更新该字典中键“isSelected”的“true”或“flase”.

在didSelectRowAtIndexPath中获取indexPath.row,您可以知道选择了哪个单元格。

sourceArray
成为您用来填充tableview的数组。 和
selectedObjects
是选定对象的数组,初始化为包含0个对象。它应该是一个(私有)类实例变量

//NSMutableArray*selectedObjects=[[NSMutableArray]retain]

-  (void) tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    YouObjectType *object = [sourceArray objectAtIndex:indexPath.row]; //This assumes that your table has only one section and all cells are populated directly into that section from sourceArray.
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
        [selectedObjects removeObject:object];
    }
    else {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        [selectedObjects addObject:object];
    }
}

然后,在您描述的按钮的发送操作方法中,使用
selectedObjects
数组中的对象执行所需操作。

您也可以使用tableview中的复选标记进行操作,如

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
 if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
} else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}

您可以使用这个github repo JLSelectionTVC()来实现这一点


你能举出任何例子或链接吗?复制和@IphoneDeveloper,如果你得到了正确答案,为什么不放弃投票支持这项工作?将cell与CellForRowatineXpath一起使用是个坏主意。好的一点是将所有项目选择状态保存在一个数组中,并在此处选中/取消选中。然后调用reloadData。