如何将数组的值发送到之前的(后退一步)ViewController

时间:2013-01-31 11:09:55

标签: iphone objective-c uinavigationcontroller

  

可能重复:
  iOS: Communicating to parent view controller

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

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

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

我希望在FirstViewController上获取resultArray的值

然后如何在FirstView Controller上获取值?

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

答案形式@Nishant B(以及其他后续答案)将有效。

由于您正在使用UINavigationController,并且想要一步返回控制器,您也可以在SecondViewController中执行此操作:

NSUInteger count = [[self navigationController].childViewControllers count];
FirstViewController* firstVC = [[self.navigationController childViewControllers] 
    objectAtIndex:count -2];
[firstVC setSomeValue:someValue];

答案 1 :(得分:0)

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

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

}

从第二个类发送此数组为:

[objOfFirstClass initWithArrayOfSecondClass:resultArray];

答案 2 :(得分: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>];

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

快乐的编码!

干杯!

答案 3 :(得分:0)

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

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

按下按钮左右,在B中执行以下操作:

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

在A的viewDidLoad中,添加以下内容:

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

还添加以下方法:

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

}

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