gpt4 book ai didi

ios - 如何将数据从先前的 segue 传递给 subview Controller ?

转载 作者:行者123 更新时间:2023-12-01 18:47:26 30 4
gpt4 key购买 nike

我需要从 View Controller to a child of a parent view controller. 传递数据
prepareSegue没有传递数据。

我需要在 viewdidload 之前通过它。

这是我如何尝试将信息从 View Controller 传递给父级的子级。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// NSLog(@"prepareForSegue: %@",segue.identifier);

ViewController2 *transfer = segue.destinationViewController;

if ([segue.identifier isEqualToString:@"Test"]) {
transfer.testLabel = @"Pass this data";
}
}

最佳答案

选项 1

如果您从父 View Controller 传递到 subview Controller ,则只需从父 View Controller 设置您的 childViewController 的属性。

customChildViewController.someRandomProperty = @"some random value";
[self presentViewController:customChildViewController animated:YES completion:nil];

选项 2

或者,您可以设置委托(delegate)

第一步:在 ChildViewController.h 文件中设置接口(interface)上面的协议(protocol)
@protocol ChildViewControllerDelegate

- (NSDictionary *) giveMeData;

@end

@interface .....

第 2 步:在 ChildViewController.h 接口(interface)中创建委托(delegate)属性
@property (strong, nonatomic) id<ChildViewControllerDelegate>delegate

第 3 步:在 ParentViewController.h 中声明委托(delegate)协议(protocol)
@interface ParentViewController : UIViewController <ChildViewControllerDelegate>

第 4 步:在 ParentViewController.m 中添加此方法:
- (NSDictionary *) giveMeData {
NSMutableDictionary * dataToReturn = [[NSMutableDictionary alloc]init];
dataToReturn[@"some"] = @"random";
dataToReturn[@"data"] = @"here";
return dataToReturn;
}

第 5 步:在启动 childViewController 之前声明委托(delegate)属性。
childViewController.delegate = self;
[self presentViewController:childViewController animated:YES completion:nil];

第 6 步:在 subview Controller 中,只要您想要数据添加这个
NSMutableDictionary * dataFromParent = [self.delegate giveMeData];

parentVC 将运行“giveMeData”并返回 NSMutableDictionary(根据您想要的任何数据进行调整)

关于ios - 如何将数据从先前的 segue 传递给 subview Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34368816/

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