ios 导航到已经加载的主ViewController,而不再次加载它

lztngnrs  于 5个月前  发布在  iOS
关注(0)|答案(2)|浏览(73)

我有一个主视图控制器,它从API加载一些数据,从那里我移动到另一个屏幕,显示特定交易的细节。我想回到主控制器,但当我使用prepareForSegue时,它会回到主控制器,但它会再次加载数据,发出API调用。我想保留主控制器的状态。
请帮助我如何保留视图控制器的状态,以及如何从第二个控制器到主控制器,而无需再次加载它。

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

字符串
fetch deal方法发出一个API调用,getdeals将其填充到一个tableview中。

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


DealDetailController是第二个视图控制器,我从这里回到主控件。
Code in DealDetailController:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    MainappViewController *maincontrol = (MainappViewController *)[segue destinationViewController]; 
}

vwkv1x7d

vwkv1x7d1#

你真正想在这里使用的是一个**'Unwind Segue'**。
This博客文章描述了(带视频)如何做到这一点。
另请参阅this问题,其中答案将您指向WWDC 2012视频,其中涵盖了Unwind segues。

628mspwn

628mspwn2#

使用popViewController.它保留状态.你已经加载了mainViewController,这意味着它在堆栈上.如果你想再次这个viewController然后简单地使用popViewController

相关问题