我有三个视图控制器(第一个,第二个和第三个视图控制器),第一个视图控制器和第二个视图控制器各有4个UITextField
,在输入文本字段中的数据之后我们可以从一个VC转到另一个VC随着数据,最后我们在第三个VC中显示数据。问题是当我们从第二个回到第一个时,文本字段就不再存在了。不知道为什么会这样?如何解决这个问题呢?请帮我解决这个问题。
答案 0 :(得分:1)
当您推送或提供新的UIViewController
时,您可以使用它发送数据,但是当您到达第二个UIViewController
时,您的第一个UIViewController
会从手机中释放空间,因此您的所有数据都会在之前的屏幕中丢失了。
并且您唯一的选择是在转到第二个UIViewController
时发回您发送的数据,而您可以通过创建委托类来发送数据。
创建一个头文件,让我们说Sample.h并在其中创建这个方法,你可以选择你想要的数据类型。
- (void)secVCDidDismisWithData:(NSDictionary *)data;
在.h文件的第二个UIViewController
中导入头文件,并将这行代码放在那里
@property (nonatomic, assign) id<Sample> delegate;
然后你必须自定义弹出按钮或关闭按钮并放置此代码
[self.navigationController popViewControllerAnimated:YES];
if(_delegate && [_delegate respondsToSelector:@selector(secVCDidDismisWithData:)])
{
[_delegate secVCDidDismisWithData:@{@"key1":@"value1",@"key2":@"value2"}];
}
然后在第一个UIViewController
.m文件中导入你的第二个UIViewController
,我相信你已经做过现在或推动屏幕,然后就在下面添加这个行
@interface FirstVC () <Sample>
然后创建第二个UIViewController
的对象并将委托设置为self,并将实现委托方法设置为像这样
- (void)secVCDidDismisWithData:(NSDictionary *)data{
NSLog(@"%@",data);}