如何将数据对象传递给嵌入在不同情节提要中导航控制器中的View Controller

问题描述 投票:0回答:1

当视图控制器位于其他情节提要中时,我的通常可以很好地将对象传递给另一个视图控制器的代码无法正常工作。

我的代码加载了嵌入在其导航控制器中的正确视图控制器,但没有任何数据。 (数据对象在目标VC中为nil。)>

这是我要使用的代码;

UIStoryboard *sb2 = [UIStoryboard storyboardWithName:@"secondSB" bundle:nil];
UINavigationController* nav = [sb2 instantiateViewControllerWithIdentifier:@"userNav"];
userDetail *destVC = (userDetail * )nav.topViewController;
NSLog(@"user name%@",user.name);//Logs name showing the user is not empty
destVC.user = user;
[self presentViewController:nav animated:YES completion:nil];

以上内容加载了没有数据的VC。

如果我在没有导航控制器的情况下直接显示VC,则可以将数据对象传递给VC。但是在那种情况下,我将失去所需的导航功能。

UIStoryboard *sb2 = [UIStoryboard storyboardWithName:@"secondSB" bundle:nil];
userDetail *destVC = [sb2 instantiateViewControllerWithIdentifier:@"userDetail"];
NSLog(@"user name%@",user.name);//Logs name showing the user is not empty
destVC.user = user;
[self presentViewController:destVC animated:YES completion:nil];

上面的代码可能有什么问题,我应该使用什么代码。

编辑:

我能够将诸如String之类的常规对象传递给导航中嵌入的VC。或者,当未将定制对象嵌入到导航中时,我可以将其传递给VC。我只是无法将自定义对象(例如user)传递给VC,或者将其嵌入到导航中时创建了另一个NSObject进行测试以用于VC。使用不同的故事板时,这可能是一些奇怪的故障。

编辑2

这里是我创建的简易版本用户的目标代码,以防原始用户对象出现问题:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface lightUser : NSObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * userid;
@property (nonatomic, retain) NSString * descript;

@end

这是VC中的属性:

#import "lightServer.h"
//in interface
@property (weak, nonatomic) lightUser* user;

ViewDidLoad中的以下代码无效,并且用户显示为nil:

self.user.name = @"Hello there";//

po self.user.name在调试器中显示nil调试器中的po self.user显示nil

当视图控制器位于不同的情节提要中时,通常可以很好地将对象传递给另一个视图控制器的代码无法正常工作。我的代码加载了正确的视图控制器...

ios uinavigationcontroller storyboard
1个回答
0
投票

不确定是否没有看到完整的代码示例,但我必须缺少某些内容...

© www.soinside.com 2019 - 2024. All rights reserved.