繁体   English   中英

将数据从一个视图控制器传递到另一个不转换

[英]Pass data from one view controller to another without transitioning

我有视图控制器A(VCA)和视图控制器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];
}

这可能吗?

在这种情况下,最好将分配数据的角色分配给单独的DataFetcher对象。 不要让UIViewControllers负责获取数据。

实现DataFetcherDelegate或完成块,它将在获取数据时通知ViewControllers。

有关委托方法的示例实现,请参阅此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM