1

我有一个从 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 是我回到主控件的第二个视图控制器。

DealDetailController 中的代码:

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

2 回答 2

1

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

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

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

于 2013-05-22T08:33:58.697 回答
0

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

于 2013-05-22T08:13:57.567 回答