Ios 将数据从ViewControllerA传递到ViewControllerB(QuickDialog)
我是iOS开发者和QuickDialog的新手 我想将数据从ViewControllerA传递到ViewControllerB 这是工作,但在ViewControllerB中我有一个问题 示例 在ViewControllerA.m中Ios 将数据从ViewControllerA传递到ViewControllerB(QuickDialog),ios,objective-c,quickdialog,Ios,Objective C,Quickdialog,我是iOS开发者和QuickDialog的新手 我想将数据从ViewControllerA传递到ViewControllerB 这是工作,但在ViewControllerB中我有一个问题 示例 在ViewControllerA.m中 -(void) goToViewControllerB { ViewControllerB *viewControllerB = [[ViewControllerB alloc]init]; // send data viewControl
-(void) goToViewControllerB
{
ViewControllerB *viewControllerB = [[ViewControllerB alloc]init];
// send data
viewControllerB.ownerName = @"TestData";
[self.navigationController pushViewController:viewControllerB animated:YES];
}
在ViewControllerB.h中
@property (nonatomic, strong) NSString *ownerName;
在ViewControllerB.m中
-(id) init
{
NSLog(@"init");
NSLog(@"ownerName : %@", _ownerName);
self = [super initWithRoot:[self createViewElement]];
return self;
}
-(void) viewDidLoad
{
[super viewDidLoad];
NSLog(@"viewDidLoad");
NSLog(@"ownerName : %@", _ownerName);
}
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"viewDidLoad");
NSLog(@"ownerName : %@", _ownerName);
}
在方法init中,我使用QuickDialog创建此页面的样式
在方法createViewElement中,我想显示_ownerName的数据,但它为NULL
这是此示例代码的输出。
>> init
>> ownerName : (null)
>> viewDidLoad
>> ownerName : TestData
>> viewAppear
>> ownerName : TestData
我想在方法createViewElement中使用此数据
如何解决
另外,我试图在viewDidLoad或ViewWillDisplay中调用方法createViewElement,但它不起作用。在设置
ownerName
的值之前,调用了ViewControllerB
的init方法。请参阅您的第一个代码片段。您可以更改init以接受如下字符串:
- (id)initWithOwner:(NSString*)theOwnerName
然后修改ViewControllerA代码以传递所有者名称,如下所示:
viewControllerB = [[ViewControllerB alloc] initWithOwner:@"TestData"];
如果你是iOS新手,你不使用故事板有什么原因吗?在我们的项目中,只使用代码。你显然不能在数据出现之前引用它。一个选项是将ownerName作为参数传递给init。