繁体   English   中英

PushView导航,而无需重新初始化UIViewController中的对象

[英]PushView Navigation without reinitializing objects in UIViewController

我只需要进行导航而无需重新初始化对象,可以通过popview导航来完成,但是我需要导航到指定的ViewController而不是先前的视图控制器。 我已经发布了另一个问题,对此仍然没有回应

如果使用的是Interface Builder:

在要导航回的视图控制器的实现(.m)文件中,添加以下方法:

-(IBAction)prepareForUnwind<NameOfViewController>:(UIStoryboardSegue *)segue
{

}

没有<>。 然后,在要尝试从其导航的视图的“界面生成器”上,需要创建一个退出界面。 如果有取消按钮,则可以按住Ctrl并拖动到视图控制器顶部的橙色小退出符号,然后释放并选择创建的prepareForUnwind方法。 如果没有专门使您向后退的按钮,而您想以编程方式执行此操作,则可以按住Ctrl并从视图控制器顶部的黄色图标拖动到橙色退出图标,选择展开方法,然后查看刚刚创建的序列的视图层次结构。 单击它,然后转到属性检查器并更改标识符。 然后,在您要从中导航的视图控制器的实现文件中,调用此方法:

[self performSegueWithIdentifier:@"whateverYouNamedIt" sender:self];

这样的展开过程会一直向后遍历堆栈,直到找到具有您调用的unwind方法的视图控制器,然后弹出该视图控制器和当前视图控制器之间的所有视图控制器。 您可以在每个视图控制器上都有一个prepareForUnwind<NameOfViewController>方法,并使用该方法进行倒退。 它使情节提要板看起来更加整洁,因为展开的序列不会显示在视图层次结构中。

编辑-仅想添加一下,如果要将任何信息从源视图控制器传递到目标视图控制器,请在目标视图控制器的prepareForUnwindSegue方法内部进行操作,就像在源代码中使用prepareForSegue方法一样视图控制器前进。 这是一个例子:

-(IBAction)PrepareForUnwindHome:(UIStoryboardSegue *)segue
{
    OtherViewController *sourceView = segue.sourceViewController;
    _NSStringVariable = sourceView.NSStringVariable;
}

这将在要导航的前一个视图控制器上将NSStringVariable设置为从要导航的源视图控制器回到NSStringVariable。

暂无
暂无

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

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