gpt4 book ai didi

ios - 反转 Segue 时如何在 iOS 中传回信息?

转载 作者:可可西里 更新时间:2023-11-01 04:11:31 27 4
gpt4 key购买 nike

我有两个 View Controller ,一和二。我从 VC One 转到 VC Two。在 VC Two 上,我选择了一些存储在数组中的数据。当我按下导航栏上的“后退”按钮时,我想将该数组发送回 VC One。

执行此操作的最佳方法是什么?

谢谢!

最佳答案

为什么不在第一个可以注册的第二个 View Controller 上设置委托(delegate)属性。那么当信息存储到数组中时,它也可以传递回它的委托(delegate)?

实现这个

在第二个 View Controller .h 文件的顶部,您需要声明第一个 View Controller 可以实现的 @protocol。协议(protocol)类似于其他语言中的接口(interface)。这是一种确保对象实现某些方法的方法,而无需具体了解该对象是什么(在本例中为 View Controller 1)。

@protocol MyDataDelegate

- (void)recieveData:(NSArray *)theData

@end

并且还为委托(delegate)声明一个属性,第一个 View Controller 可以像在呈现第二个 View Controller 之前一样设置它自己

@interface SecondViewController

@property (nonatomic, weak) id<MyDataDelegate> delegate;

然后在你的第一个 View Controller .h文件中,实现协议(protocol)

.h文件中

#import SecondViewController.h

@interface FirstViewController <MyDataDelegate>

//.....

.m中,实现协议(protocol)中声明的方法

@implementation

//.... usual methods

- (void)recieveData:(NSArray *)theData {

//Do something with data here
}

为了将第一个 View Controller 设置为委托(delegate),您需要使用 UIStoryBoardDelegate 方法在它发生之前拦截它。将其添加到第一个 View Controller

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

//Get a handle on the view controller about be presented
SecondViewController *secondViewController = segue.destinationViewController;

if ([secondViewController isKindOfClass:[SecondViewController class]]) {
secondViewController.delegate = self;
}
}

现在你有一个从第二个 View Controller 指向第一个 View Controller 的指针,并且可以通过在第二个 View Controller 中调用以下方法来调用方法并传回数据

[self.delegate recieveData:theArrayData];

如果需要,您还可以向协议(protocol)添加另一个方法来通知代理第二个 View Controller 正在被关闭。或者使用其他答案中的一些建议

关于ios - 反转 Segue 时如何在 iOS 中传回信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com