这是我第一次发帖,而我只是遇到了问题,并且#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方法访问我的数组(或者我?),所以我无法将其发送到另一个视图。
再一次,我是新人。因此,如果需要进一步澄清,请告诉我,我将更新这篇文章。谢谢。
答案 0 :(得分:0)
正如其他人所指出的那样,您创建了一个新的视图控制器,而不是访问标签栏中的视图控制器。您应该访问现有的视图控制器:
CalculationsViewController * viewController2 = [self.tabBarController.viewControllers objectAtIndex:1];