如何在第二个标签栏控制器中更改数组的内容?

时间:2014-05-12 16:34:48

标签: ios objective-c uitableview uitabbarcontroller

我尝试将数据发送到didSelectRowAtIndexPath方法中的标签栏控制器。当我第一次发送带有数据的数组时它工作正常,但是当数组的数据发生变化并再次发送它时,第二个标签栏的数组保持与第一次相同。你能帮我理解为什么吗? 代码:

- (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;
}

然后在nextController中我想填充tableView的内容为" items"阵列。 在

 - (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;
}  

1 个答案:

答案 0 :(得分:0)

你的问题含糊不清。你提到它第一次工作但不是第二次工作,但是从来没有说明这意味着什么。您发布了在NextTableViewController中设置属性的代码,但是没有说明您对该属性的处理方式。从NextTableViewController发布方法,该方法使用items属性执行某些操作。

如果我不得不猜测,我猜你会在viewDidLoad方法中处理它,该方法在首次显示VC时只调用一次。

您应该在NextTableViewController的viewWillAppear:animated方法中添加代码,该方法可以执行item属性所需的任何操作。