如何返回到以前的视图控制器?
How to go back to previous view controller?
我有一个 UIViewController A,将 segue 推送到 UIViewController B,在某些情况下我需要重复这个,例如:
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 {
...
}
你不应该回收它们。我的意思是你不应该回收那些视图控制器的具体实例。
当然,她的一些技术实现可能允许这样做,但它(与 table 视图单元格相反)不是必需的。
您正在尝试过早优化。只需根据需要创建新的视图控制器实例。任何支持 iOS6 及更高版本的 iPhone 都可以毫无问题地处理它。
可以通过方便的方法传递数据,例如
-(void)configureWithData:(WhateverDataType *)paramData
在为 segue 做准备时,您将获得对目标视图控制器的引用并像这样传递数据:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
CustomViewController *nextViewController = [segue destinationViewController];
[nextViewController configureWithData:someData];
}
我有一个 UIViewController A,将 segue 推送到 UIViewController B,在某些情况下我需要重复这个,例如:
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 {
...
}
你不应该回收它们。我的意思是你不应该回收那些视图控制器的具体实例。 当然,她的一些技术实现可能允许这样做,但它(与 table 视图单元格相反)不是必需的。
您正在尝试过早优化。只需根据需要创建新的视图控制器实例。任何支持 iOS6 及更高版本的 iPhone 都可以毫无问题地处理它。
可以通过方便的方法传递数据,例如
-(void)configureWithData:(WhateverDataType *)paramData
在为 segue 做准备时,您将获得对目标视图控制器的引用并像这样传递数据:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
CustomViewController *nextViewController = [segue destinationViewController];
[nextViewController configureWithData:someData];
}