1

可能重复:
iOS:与父视图控制器通信

假设我有 2 个名为 FirstViewController 和 SecondViewController 的 viewController

现在使用导航,我从 FirstViewController 转到 SecondViewController。

现在我在 SecondViewController 上有一个名为 resultArray 的数组

我想在 FirstViewController 上获取 resultArray 的值

那么如何获得 FirstView Controller 上的值呢?

任何的想法?

4

4 回答 4

1

@Nishant B 的答案形式(以及其他后续答案)将起作用。

由于您使用的是 UINavigationController,并且您希望后退一步访问控制器,因此您也可以在 SecondViewController 中执行此操作:

NSUInteger count = [[self navigationController].childViewControllers count];
FirstViewController* firstVC = [[self.navigationController childViewControllers] 
    objectAtIndex:count -2];
[firstVC setSomeValue:someValue];
于 2013-01-31T11:26:33.560 回答
0

您可以在这里做的是在您的第一堂课中创建一个构造函数,例如

-(void)initWithArrayOfSecondClass:(NSMutableArray *)arr_OfSecondClass;
{
    arr_FirstClassArray = [[NSMutableArray alloc]initWithArray:arr_OfSecondClass];

}

从你的第二堂课发送这个数组:

[objOfFirstClass initWithArrayOfSecondClass:resultArray];
于 2013-01-31T11:14:53.907 回答
0

您可以通过以下方式实现它:

在“FirstViewController”文件中:

1) 创建数组对象例如:arrTest;

2)创建一种方法,例如:

-(void)getArrayValue:(NSMutableArray *)pArr
{
     arrTest = pArr;
}

3)在推送之前调用“SecondViewController”的方法:

[objSecondViewController setParent:self];\

现在,在“SecondViewController”文件中:

.h 文件:

@class FirstViewController;

在 .m 文件中:

#import "FirstViewController.h"

1)在.h文件中声明一个变量:

id parent;

2)声明并创建一个方法“.h”和“.m”文件:

-(void)setParent:(id)pID
{
    parent=pID;
}

3)当您提出数组时,请调用如下方法:

[parent getArrayValue: <your_new_array>];

希望,你知道你想要什么。

快乐编码!

干杯!

于 2013-01-31T11:19:27.957 回答
0

还有一种使用本地通知的方法。

假设您要将数据从 B 发送到 A。

当您按下一个按钮左右时,在 B 中执行以下操作:

- (NSString *) saveAndExit
{
    [[NSNotificationCenter defaultCenter] postNotificationName: @"AnswerValue" object: answerView.text];
    [self.navigationController popViewControllerAnimated:YES];
    return @"abc";
}

在 A'sviewDidLoad中,添加以下内容:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:@"AnswerValue" object:nil];

还要添加以下方法:

- (void) incomingNotification:(NSNotification *)notification{
NSString *result = [notification object];

}

两者的通知名称必须相同。在这种情况下,名称是 AnswerValue。这会将值“abc”从 B 发送到 A 并存储在result.

于 2013-01-31T11:26:38.173 回答