我是 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);
}
在方法初始化中,我使用 QuickDialog 创建了 thisPage 的样式。
在方法 createViewElement 中,我想显示 _ownerName 的数据,但它是 NULL。
这是此示例代码的输出。
>> init
>> ownerName : (null)
>> viewDidLoad
>> ownerName : TestData
>> viewAppear
>> ownerName : TestData
我想在方法 createViewElement 中使用此数据。
如何解决。
附言我尝试在 viewDidLoad 或 viewWillAppear 中调用方法 createViewElement,但它不起作用。
最佳答案
ViewControllerB
的 init 方法在您设置 ownerName
的值之前被调用。查看您的第一个代码片段。你可以改变你的 init 来接受这样的字符串:
- (id)initWithOwner:(NSString*)theOwnerName
然后修改您的 ViewControllerA 代码以像这样传递所有者名称:
viewControllerB = [[ViewControllerB alloc] initWithOwner:@"TestData"];
关于ios - 将数据从 ViewControllerA 传递到 ViewControllerB(QuickDialog),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297593/