导航到已加载的主 ViewController,无需再次加载

问题描述 投票:0回答:2

我有一个主视图控制器,它从 API 加载一些数据,从那里我移动到另一个屏幕,显示特定交易的详细信息。我想返回到主控制器,但是当我使用

prepareForSegue
时,它会返回到主控制器,但它会再次加载数据以进行 API 调用。我想保留主控制器的状态。

请帮助我了解如何保留视图控制器的状态以及如何从第二个控制器连接到主控制器而不再次加载它。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self FetchDeals];
    [self Getdeals];
}

fetch deal 方法进行 API 调用,并且 getdeals 将其填充到表视图中。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"Dealdetail"])
    {
        //NSLog(@"New controller");
        DealDetailController *detail = (DealDetailController *)[segue destinationViewController];
        
        detail.detailimage = imagepath;
    }
}

DealDetailController 是我回到主控件的第二个视图控制器。

DealDetailController 中的代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    MainappViewController *maincontrol = (MainappViewController *)[segue destinationViewController]; 
}
ios cocoa-touch
2个回答
1
投票

您真正想在这里使用的是“Unwind Segue”

这篇博客文章描述了(带有视频)如何做到这一点。

另请参阅this问题,其中答案将您引向涵盖 Unwind segues 的 WWDC 2012 视频。


0
投票

使用popViewController。它保留状态。 你已经加载了 mainViewController 这意味着它在堆栈上。如果你再次想要这个 viewController 那么只需使用 popViewController

© www.soinside.com 2019 - 2024. All rights reserved.