繁体   English   中英

如何返回上一个视图控制器?

[英]How to go back to previous view controller?

我有一个将UIViewController B推送到UIViewController B的UIViewController A,在某些情况下,我需要重复此操作,例如:

ViewController A -> ViewController B -> ViewController A -> ViewController B

我也需要从ViewController B -> ViewController A传递数据

我不想创建4个ViewController,所以在这种情况下如何回收代码?

您只需推入并弹出相同的视图控制器即可。

如果您希望B与A进行通信,则在A处设置一个与B通信的协议(或实施该协议的人)

B码

@protocol MyProtocol <NSObject>
-(void)callFromB:(id)data;
@end
@property (weak) id <MyProtocol> delegate;

执行:

if ([self.delegate respondsToSelector:@selector(callFromB:)]){
        [self.delegate callFromB:data];
    }

一个代码

B.delegate = self;
-(void)callFromB:(id)data {
...
}

您不应该回收它们。 我的意思是,您不应回收那些视图控制器的具体实例。 当然,她可能会允许一些技术实现,但这不是必需的(与表视图单元相反)。

您正在尝试过早优化。 只需根据需要创建新的视图控制器实例。 任何支持iOS6及更高版本的iPhone都可以毫无问题地处理此问题。

例如,可以通过一种方便的方法来传递数据

-(void)configureWithData:(WhateverDataType *)paramData

在准备segue时,您将获得对目标视图控制器的引用,并像这样传递数据:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    CustomViewController *nextViewController = [segue destinationViewController];
    [nextViewController configureWithData:someData];
}

暂无
暂无

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

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