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

标签 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);
}

在方法初始化中,我使用 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/

相关文章:

ios - 设置 CAShapeLayer 的线帽

objective-c - 使用自定义形状裁剪照片

c++ - NSString* 到 char*?

ios - 带有动态 subview 的自动布局

objective-c - iOS 5 : WebKit discarded an uncaught exception 中的新错误

ios - View 不会滚动到选定的元素 QuickDialog

ios - QuickDialog 与 Storyboard 的集成

ios - 是否可以将文件作为iMessage附件发送?

iphone - 如何在 iPhone 中获取应用程序列表