Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 单击“后退”按钮后,如何将数据从当前屏幕传回上一屏幕,ios_Iphone_Ios - Fatal编程技术网

Iphone 单击“后退”按钮后,如何将数据从当前屏幕传回上一屏幕,ios

Iphone 单击“后退”按钮后,如何将数据从当前屏幕传回上一屏幕,ios,iphone,ios,Iphone,Ios,单击按钮后,我正在将数据从FirstView传输到SecondView FirstView.h @property (strong, nonatomic) NSString *stringOfFirstView; 从另一个角度看,我有 SecondView.h @property (strong, nonatomic) NSString *stringOfSecondView; 在第二个视图中,我的目标是通过单击“上一步”按钮返回第一个视图,同时还要将stringOfSeco

单击按钮后,我正在将数据从FirstView传输到SecondView

FirstView.h
@property (strong, nonatomic) NSString  *stringOfFirstView; 
从另一个角度看,我有

SecondView.h
    @property (strong, nonatomic) NSString  *stringOfSecondView; 
在第二个视图中,我的目标是通过单击“上一步”按钮返回第一个视图,同时还要将
stringOfSecondView
分配给
stringOfFirstView

问题:

How can I assign stringOfSecondView to stringOfFirstView via clicking back button.
让您知道,我在SecondView中通过执行以下操作检测到“后退”按钮上的单击事件

SecondView.m
- (void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:YES];
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
        NSLog(@"will show onto console");  

} 
但我被困在如何将数据传回的问题上


如果您对此问题有任何线索,请提供建议。

我将使用代表。因此,在第二个视图中,您需要创建一个将数据发送回第一个视图的协议。您的第一个视图将成为第二个视图的代理。有很多关于如何委派的教程。

基本上你有两个选择:

  • secondView
    :保留对
    firstView
  • 更灵活的选择:如果您可能希望重用该功能,请定义 协议让
    firstView
    执行此协议,并让
    firstView
    作为
    secondView

  • 在这两种情况下,
    secondView
    都将有一个assign/weak属性,其中存储对
    firstView
    的引用。而
    firstView
    将实现一种方法,该方法接收NSString并将其存储在
    stringOfFirstView

    中。如果不认为它是通过单击后退按钮分配的,可能会有所帮助。基本上,当您单击后退按钮时,FirstView将重新获得控制权。在它重新处于控制状态时,您只需向SecondView请求stringOfSecondView的值,并将其存储在您喜欢的任何位置,例如stringOfFirstView中


    为了向SecondView询问此信息,您可能希望通过将SecondView的ID存储在FirstView的实例变量中来“记住”SecondView是谁。另外,如果您没有进行自动引用计数,请记住正确地保留和释放它。

    为了补充ttran的答案,您可以在这里查看:

    基本思想是创建一个协议(其中定义了应该由采用该协议的类(可选或不可选)实现的方法)。这意味着您的FirstViewController可以采用一个协议,因此您的第二个视图控制器可以知道第一个视图控制器具有的一些方法

    因此,缺少的部分是第二个视图控制器需要有对第一个视图控制器的引用。您可以通过委托(委托通常是一个弱属性)来做到这一点


    同样,通过阅读协议和委托的基础知识,您可以阅读更多内容并了解此过程。

    委托是您可以发送回数据的另一个选项。我也在寻找另一种方法,例如如何从uinavigation controller了解以前的控制器。。。。。
    SecondView.m
    - (void) viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:YES];
        if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
            NSLog(@"will show onto console");  
    
    }