点击按钮后,我将数据从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");
}
但我被困在如何传回数据
如果您有关于此问题的任何线索,请提供建议。
答案 0 :(得分:2)
我会使用代表。因此,在SecondView中,您需要创建一个将数据发送回FirstView的协议。您的FirstView将成为SecondView的委托。有很多关于如何建立代表的教程。
答案 1 :(得分:0)
基本上你有两个选择:
secondView
中:保留对firstView
firstView
实现此协议,让firstView
成为委托
secondView
在这两种情况下,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可以采用协议,因此您的第二视图控制器可以知道第一视图控制器具有的一些方法。
因此,缺少的部分是第二视图控制器需要引用第一视图控制器。你可以通过委托来做到这一点(委托通常是一个弱的属性)。
同样,您可以阅读协议和代表的基础知识,阅读更多信息并理解这一过程。