所选值未存储在 didSelectRow 的 AddObject 中

Posted

技术标签:

【中文标题】所选值未存储在 didSelectRow 的 AddObject 中【英文标题】:Selected Values are not storing in AddObject in didSelectRow 【发布时间】:2018-11-17 18:14:31 【问题描述】:

选定的对象没有保存在 didSelectRowAtIndex 的 addObject 中,我需要将该数组传递给另一个视图控制器。

@implementation nextViewController

    NSArray *tableData;
    NSArray * arrayfortable;
    NSMutableArray * selectedIndexpath;


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];

    NSMutableArray *selectedIndexpath = [[NSMutableArray alloc]init];
    selectedIndexpath = [selectedIndexpath arrayByAddingObject:[tableData objectAtIndex:indexPath.row]];

    NSLog(@"selected",selectedIndexpath);

    if (cell.accessoryType == UITableViewCellAccessoryNone) 
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        __selectedPath = indexPath;
     else 
        cell.accessoryType = UITableViewCellAccessoryNone;
        __selectedPath = nil;
    

【问题讨论】:

【参考方案1】:

这一行:

NSMutableArray *selectedIndexpath = [[NSMutableArray alloc]init];

正在创建一个名为 selectedIndexpath 的新局部变量,它隐藏了 selectedIndexpath 实例变量。

您需要删除该行。但是你确实需要初始化实例变量。

我会在viewDidLoad 中添加以下行:

selectedIndexpath = [[NSMutableArray alloc] init];

另一个需要的更改是替换该行:

selectedIndexpath = [selectedIndexpath arrayByAddingObject:[tableData objectAtIndex:indexPath.row]];

与:

[selectedIndexpath addObject:@(tableData objectAtIndex:indexPath.row)];

请注意,您需要将索引路径行包装为NSNumber

【讨论】:

以上是关于所选值未存储在 didSelectRow 的 AddObject 中的主要内容,如果未能解决你的问题,请参考以下文章

Angular-Kendo 在更改时自动完成所选值

Html.DropdownListFor 未设置所选值

所选值的总最大值

无法设置所选值

Angular 材质:在下拉列表中获取所选值的 id

重力根据所选值的数量形成条件逻辑