用委托传递数据但仍为零?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用委托传递数据但仍为零?相关的知识,希望对你有一定的参考价值。
我制作了2个viewcontrollers并在tabbar控制器上实现。我使用委托将一些数据从A vc传递给B vc。当我检查日志时它显示了正确的值。但是当我搬到B vc时,我通过的值是零。 (该值适用于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];
}
答案
将数组打印在viewWillAppear
内部而不是零
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];
另一答案
请检查您移动到B-VC的方式以及您在A -VC中使用的(B-VC)实例是否与B-VC“viewWillAppear”方法中的self相同。当你转移到B-VC时,似乎已经创建了一个新实例。
或者您可以实现'setDownloadArr'方法,记录值并显示值何时变为零。
以上是关于用委托传递数据但仍为零?的主要内容,如果未能解决你的问题,请参考以下文章
将单元格从委托传递到 UITableViewController 时 indexPath 为零
尽管苹果放弃了对 iPhone 4S 的支持,但仍为 iOS 提交添加了 3.5 英寸的屏幕截图
Dagger 2:在片段中调用onAttach之前,注入的对象可能仍为null