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

时间:2012-07-23 19:12:25

标签: iphone ios

点击按钮后,我将数据从FirstView传输到SecondView。

FirstView.h
@property (strong, nonatomic) NSString  *stringOfFirstView; 
FirstView.m

 - (void)pushToSecond {
         SecondView *controller   =   [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
         controller.stringOfSecondView          =   self.stringOfFirstView;
         [self.navigationController pushViewController:controller animated:NO];

        }

在SecondView中,我有

SecondView.h
    @property (strong, nonatomic) NSString  *stringOfSecondView; 

在SecondView上,我的目标是通过点击后退按钮返回FirstView,同时也希望将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");  

} 

但我被困在如何传回数据

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

4 个答案:

答案 0 :(得分:2)

我会使用代表。因此,在SecondView中,您需要创建一个将数据发送回FirstView的协议。您的FirstView将成为SecondView的委托。有很多关于如何建立代表的教程。

答案 1 :(得分:0)

基本上你有两个选择:

  1. secondView中:保留对firstView
  2. 的引用
  3. 更灵活的替代方案:如果您可能希望重用该功能,请定义一个 协议。让firstView实现此协议,让firstView成为委托 secondView
  4. 在这两种情况下,secondView都会有一个assign / weak-Property,它会存储对firstView的引用。 firstView将实现一个方法,该方法接收NSString并将其存储在stringOfFirstView

答案 2 :(得分:0)

通过单击后退按钮进行分配可能有助于不将其视为分配。基本上,当您单击后退按钮时,FirstView将重新获得控制权。在它重新处于控制状态时,您可以简单地向SecondView询问stringOfSecondView的值并将其存储在任何您喜欢的位置,例如在stringOfFirstView中。

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

答案 3 :(得分:0)

为了补充ttran的答案,你可以看看这里:http://mobiledevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html

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

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

同样,您可以阅读协议和代表的基础知识,阅读更多信息并理解这一过程。