将数据从ViewControllerA传递到ViewControllerB(QuickDialog)

时间:2014-01-23 01:29:28

标签: ios objective-c quickdialog

我是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,但它不起作用。

1 个答案:

答案 0 :(得分:1)

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

- (id)initWithOwner:(NSString*)theOwnerName

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

viewControllerB = [[ViewControllerB alloc] initWithOwner:@"TestData"];