我是iOS开发人员和QuickDialog的新手。
我想将数据从ViewControllerA传递到ViewControllerB。
这是有效但在ViewControllerB中我遇到了问题。
示例
在ViewControllerA.m中
-(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);
}
在Method init中,我使用QuickDialog创建thisPage的样式。
在方法createViewElement中,我想显示_ownerName的数据,但它是NULL。
这是此示例代码的输出。
>> init
>> ownerName : (null)
>> viewDidLoad
>> ownerName : TestData
>> viewAppear
>> ownerName : TestData
我想在方法createViewElement中使用此数据。
如何解决它。
P.S。我试图在viewDidLoad或viewWillAppear中调用方法createViewElement,但它不起作用。
答案 0 :(得分:1)
在设置ViewControllerB
的值之前,会调用ownerName
的init方法。查看您的第一个代码段。你可以改变你的init来接受这样的字符串:
- (id)initWithOwner:(NSString*)theOwnerName
然后修改您的ViewControllerA代码以传递所有者名称,如下所示:
viewControllerB = [[ViewControllerB alloc] initWithOwner:@"TestData"];