将数组传递给ViewController,加载ViewController,然后刷新UITableView

时间:2014-04-26 23:06:32

标签: ios objective-c uitableview

这是我第一次发帖,而我只是遇到了问题,并且#34;让你的脚湿透了#34;项目(简单的小费计算器)我在业余时间做。

我想要做的是,将数组从ViewController1传递到ViewController2,然后我想加载ViewController2并刷新位于{UITableView上的ViewController2 1}}。

我使用ViewController1获取用户提交的数据并计算结果。我想将这些结果发送到ViewController2以显示结果。我这样做是因为它是一个标签式应用程序,我希望结果显示在另一个标签上。

以下是我将数据从ViewController1传递到ViewController2

的方法
    -(void) displayCalculationsView:(NSMutableArray *)array{

        UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
       CalculationsViewController *viewController2 = [story instantiateViewControllerWithIdentifier:@"ViewController2" ];

       [viewController2 setArrayValueAndRefreshTable:array];
       [self.tabBarController setSelectedIndex:1];
   }

以下是接收端的内容:

-(void)setArrayValueAndRefreshTable:(NSMutableArray *)array{

    if (calculationsDisplayArray == nil) {
        calculationsDisplayArray = [[NSMutableArray alloc] init];
    }

    [calculationsDisplayArray removeAllObjects];
    [calculationsDisplayArray addObjectsFromArray:array];

    for (NSString *data in pushedDisplayArray) {
        NSLog(@"PUSHED ARRAY DATA: %@", data);
    }

    [tableView reloadData];
}

数据似乎收到的很好,因为它显示了NSLog中的所有正确数据。但是,当[self.tabBarController setSelectedIndex:1];部分点击时,它会在页面加载后清除我的calculationsDisplayArray

有没有办法防止它变成零?我使用ARC并且它不允许我使用[arrayname retain];我不确定我是否想要使用segue,因为我无法使用segue方法访问我的数组(或者我?),所以我无法将其发送到另一个视图。

再一次,我是新人。因此,如果需要进一步澄清,请告诉我,我将更新这篇文章。谢谢。

1 个答案:

答案 0 :(得分:0)

正如其他人所指出的那样,您创建了一个新的视图控制器,而不是访问标签栏中的视图控制器。您应该访问现有的视图控制器:

CalculationsViewController * viewController2 = [self.tabBarController.viewControllers objectAtIndex:1];