Ios 如何在第二个选项卡栏控制器中更改数组的内容?

Ios 如何在第二个选项卡栏控制器中更改数组的内容?,ios,objective-c,uitableview,uitabbarcontroller,Ios,Objective C,Uitableview,Uitabbarcontroller,我正在尝试将数据发送到didSelectRowAtIndexPath方法中的选项卡栏控制器。当我第一次发送带有数据的数组时,它工作正常,但当数组的数据被更改并再次发送时,第二个选项卡栏的数组与第一次保持不变。你能帮我弄明白这是为什么吗? 代码: 然后在nextController中,我想用“items”数组的内容填充tableView。 在 你的问题含糊不清。您提到它第一次起作用,但第二次不起作用,但从未指出这意味着什么。您发布了在NextTableViewController中设置属性的代码,

我正在尝试将数据发送到didSelectRowAtIndexPath方法中的选项卡栏控制器。当我第一次发送带有数据的数组时,它工作正常,但当数组的数据被更改并再次发送时,第二个选项卡栏的数组与第一次保持不变。你能帮我弄明白这是为什么吗? 代码:

然后在nextController中,我想用“items”数组的内容填充tableView。 在


你的问题含糊不清。您提到它第一次起作用,但第二次不起作用,但从未指出这意味着什么。您发布了在NextTableViewController中设置属性的代码,但没有给出任何关于如何处理该属性的指示。从NextTableViewController发布使用items属性执行操作的方法

如果让我猜的话,我会猜你是在viewDidLoad方法中处理它的,当VC第一次显示时,这个方法会被调用一次,而且只有一次


您应该在NextAttableViewController的
视图中将显示:动画的
方法中添加代码,该方法对您的items属性执行任何需要执行的操作。

您如何知道它不起作用?我假设您的接口会根据此阵列进行更改?我想我们需要看看nexttableviewcontroller中的一些代码来提供帮助。所以第一次填充数组时,它只显示“项”的内容。是的,关于viewDidLoad,您是对的。谢谢你!我将NSLog添加到viewwillappease:animated方法中,我可以看到数组中的更改,但我仍然可以用这些项填充tableView。。也许cellForRowAtIndexPath方法有问题?我刚刚编辑了我的问题。在您的视图中将显示,添加对
[tableView reloadData]
的调用;实际上,在ViewWillAppeard中调用reloadData有点浪费,因为这意味着表视图将在第一次加载时绘制两次。最好为items属性创建一个自定义setter,并在该setter中调用表视图的重载数据。然而,我猜想编写自定义setter超出了您当前的知识范围。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

if(cell.accessoryType == UITableViewCellAccessoryNone) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    [_arrayToPass addObject:[_data objectAtIndex:indexPath.row]];
}
else {

    cell.accessoryType = UITableViewCellAccessoryNone;
    [_arrayToPass removeObject:[_ingridients objectAtIndex:indexPath.row]];

}

NextTableViewController *nextController = (NextTableViewController *)    [self.tabBarController.viewControllers objectAtIndex:1];

nextController.items = _arrayToPass;
}
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:  (NSIndexPath *)indexPath
 {
    static NSString *simpleTableIdentifier = @"Cell";
    UITableViewCell *cell = [tableView     dequeueReusableCellWithIdentifier:simpleTableIdentifier];

  if (cell == nil) {
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:simpleTableIdentifier];
}

    cell.textLabel.text = [_items objectAtIndex:indexPath.row];

 return cell;
}