我有View Controller A(VCA)和View Controller B(VCB)。 VCA从API调用中提取数据,并使用返回的数据填充标签等。
当检索到这些数据时,我希望能够将其中一些数据传递给VCB,而无需转换到VCB。什么时候“去”VCB我希望数据已经存在。
目前,我通过呈现和呈现的模态视图链接了两个视图控制器。这很好,当我提出VCB时,我从VCA发送数据。但是,从UI / UX的角度来看,我正在切换到滑动面板视图。因此,您从VCA开始,然后可以向左滑动以从右侧滑入VCB。
由于滑动,您可以同时看到两个视图控制器,这就是为什么我希望VCB在视觉上完整。
我在VCA中的当前代码是在doubleTap手势识别器上调用的:
- (void)showDetailView
{
// Initialize VCB
ViewContollerB *vcb = [[ViewContollerB alloc] init];
// ················································
// Pass data to ViewContollerB
// ················································
vcb.currently = currently;
vcb.hourly = hourly;
vcb.daily = daily;
vcb.unitTemp = unitTemp;
vcb.currentLocationCity = currentLocationCity;
vcb.currentLocationRegion = currentLocationRegion;
vcb.currentTemp = currentTemp;
// Set transition style to cross fade
vcb.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
// Present the daily details
[self presentViewController:vcb animated:YES completion:nil];
}
就像我之前说过的,这很好用。
在接收端(VCB),我在- (void)viewWillAppear:(BOOL)animated
if (currentTemp) {
// Displays data from passed variables
[self displayHeaderInfo];
}
我想要做的主要是在VCA中:
// PRETEND DATA RETURNED FROM API CALL IN VCA
if (currentTemp) {
// Set array for VCB
vcb.currentTemp = currentTemp;
**** CODE TO SEND THIS TO VCB ****
**** BUT NOT GO TO VCB, STAY ****
**** RIGHT HERE IN VCA. ****
// Display in VCA
[self displayCurrentTemp];
}
这可能吗?
答案 0 :(得分:2)
在这种情况下,最好将分配数据的角色分配给单独的DataFetcher对象。不要让你的UIViewControllers负责获取数据。
实现DataFetcherDelegate或完成块,它将在获取数据时通知ViewControllers。
有关委托方法的示例实现,请参阅this answer。