gpt4 book ai didi

ios - Objective-C Storyboards Segue - 将数据从目的地传回 sourceViewController

转载 作者:行者123 更新时间:2023-12-01 17:25:59 25 4
gpt4 key购买 nike

我目前有两个 View Controller ,我通过 Storyboard segue(导航 Controller )将它们链接起来。当用户在第一个 View 上按下按钮时,屏幕转到第二个 View 。在第二个 View 中,有文本字段,以便用户可以编辑详细信息。当我按下后退导航按钮时,如何将详细信息从第二个 View Controller 传递回第一个 View Controller ?

我使用此代码将数据从第一个 View Controller 发送到第二个 View Controller

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
SettingsViewController *settingsViewController = [segue sourceViewController];
[settingsViewController setAddressString:[self addressString]];
NSLog(@"Settings address string of SettingsViewController to: %@", [self addressString]);
}

我现在能想到的将数据从第二个 View Controller 传递到第一个 View Controller 的唯一方法是覆盖 viewWillDisappear第二个 View Controller 的方法。但是有没有一种方法可以使用 segue 方法?这样做的推荐方法是什么?

最佳答案

您可以使用委托(delegate)。
在您的第二个 View Controller 头文件中,您必须创建一个委托(delegate)方法。

@protocol SettingsDelegate <NSObject>
- (void)userHasCompletedSettings:(NSArray *)userSettings;
@end

@interface SettingsViewController : UIViewController
@property id<SettingsDelegate>delegate;
// Any other properties you have
@end

在调用 segue 时,在您的第一个 View Controller 中,您将委托(delegate)设置为 self。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
SettingsViewController *settingsViewController = [segue sourceViewController];
[settingsViewController setAddressString:[self addressString]];
NSLog(@"Settings address string of SettingsViewController to: %@", [self addressString]);
settingsViewController.delegate = self;
}

在您的第二个 View Controller 中,您需要调用该方法。您可以实现自己的后退按钮,以便您可以设置 IBAction 来调用您的委托(delegate)方法。
- (IBAction)backButtonPressed:(id)sender
{
// Package up your settings details in the array
[self userHasCompletedSettings:arrayOfMySettings];
[self dismissViewControllerAnimated:YES completion:nil];
}

您还需要设置用于调用第一个 View Controller 的 backButtonPressed 操作的方法。
-(void)userHasCompletedSettings:(NSArray *)userSettings
{
// Do what you need to do with the settings.
}

关于ios - Objective-C Storyboards Segue - 将数据从目的地传回 sourceViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844727/

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