0

我是 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 中使用此数据。

如何解决它。

PS 我试图在 viewDidLoad 或 viewWillAppear 中调用方法 createViewElement 但它不起作用。

4

1 回答 1

1

ViewControllerB在您设置 的值之前调用您的 init 方法ownerName。查看您的第一个代码段。您可以更改您的 init 以接受这样的字符串:

- (id)initWithOwner:(NSString*)theOwnerName

然后修改您的 ViewControllerA 代码以传递所有者名称,如下所示:

viewControllerB = [[ViewControllerB alloc] initWithOwner:@"TestData"];
于 2014-01-23T01:35:29.097 回答