我制作了2个ViewController,并在Tabbar Controller上实现。我使用委托将一些数据从A vc传递到B vc。当我检查日志时,它显示了正确的值。但是当我使用B vc时,我传递的值为nil。 (该值用于tableview。)这是我的代码。
in A vc
-(void)passData {
NSMutableDictionary *infoDic = [[NSMutableDictionary alloc] init];
[infoDic setObject:url forKey:@"file_url"];
[downloadArr addObject:fileInfoDic];
[Bvc getDataFromA:downloadArr];
[Bvc reloadTableView];
}
in B vc
-(void)getDataFromA:(NSMutableArray *) downloadArr{
self.downloadArr = [downloadArr mutableCopy];
NSLog(@"my download list%@", self.downloadArr); // This time was ok.
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"Array status %@", self.downloadArr);//This time it showed me nil
[self.tableView reloadData];
}
答案 0 :(得分:2)
要在viewWillAppear
内将数组打印为nil
NSLog(@"Array status %@", self.downloadArr);//This time it showed me nil
在从aVC显示bVC之前,您需要给它一个值,无论使用present / segue / push,也不要忘记将其声明为strong
,您需要这样做
bvc = [[self.tabBarController viewControllers] objectAtIndex:1];
[bvc loadViewIfNeeded];
[bvc getDataFromA:downloadArr];
答案 1 :(得分:0)
请检查您移至B-VC的方式以及您在A -VC中使用的(B-VC)实例是否与B-VC“ viewWillAppear”方法中的实例相同。 看来当您移至B-VC时,已创建一个新实例。
或者您可以实现'setDownloadArr'方法,记录该值并在该值变为零时显示。